问题
My code compiled fine with the following command:
javac -cp "../lib/*" AvroReader.java
(lib is where i put my jar files)
At run time I get a ClassNotFoundException
on the following line:
DatumReader<?> dtmrdr = new GenericDatumReader();
It says it can't find org.apache.avro.generic.GenericDatumReader
even though I've imported it.
Why this is happening?
Thanks!
回答1:
Importing has nothing to do with loading classes or setting CLASSPATH.
Try this:
java -cp .;../lib/* Generator
Using the dot '.'
as the first entry in the CLASSPATH assumes that the Generator.class
file exists in the directory from which you're running java, and /lib
is one level up from that directory. Adjust as needed if both of these are not correct.
回答2:
You should run the program including again the same cp:
java -cp "lib directory where i put all the jars" MainClassOfYourApplication
After you compiled it with:
javac -cp "lib directory where i put all the jars" AvroReader.java
More applied to your example:
First step(compile all the needed java files): javac -cp "path/to/jars/*" AvroReader.java //here you should include all the java files not yet compiled but which you need to run your app
Second step: java -cp "path/to/jars/*" package.subpackage1.subpackage2.Generator
来源:https://stackoverflow.com/questions/11462421/classpath-running-a-java-program-from-the-command-line