classpath - 从命令行运行java程序

Dao*_*Lam 4 java jar classpath classnotfoundexception

使用以下命令编译好我的代码:

javac -cp "../lib/*" AvroReader.java

(lib是我放我的jar文件的地方)

在运行时,我得到ClassNotFoundException以下行:

DatumReader<?> dtmrdr = new GenericDatumReader();

它说org.apache.avro.generic.GenericDatumReader即使我已经导入它也找不到它.

为什么会这样?

谢谢!

duf*_*ymo 12

导入与加载类或设置CLASSPATH无关.

试试这个:

java -cp .;../lib/* Generator
Run Code Online (Sandbox Code Playgroud)

使用点'.'作为CLASSPATH中的第一个条目假定该Generator.class文件存在于运行java的目录中,并且该目录位于该目录的/lib一级.如果这两个都不正确,请根据需要进行调整.


Raz*_*van 8

您应该再次运行程序包括相同的cp:

java -cp "lib directory where i put all the jars" MainClassOfYourApplication
Run Code Online (Sandbox Code Playgroud)

用以下代码编译后:

javac -cp "lib directory where i put all the jars" AvroReader.java
Run Code Online (Sandbox Code Playgroud)

更多应用于您的示例:

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
Run Code Online (Sandbox Code Playgroud)