我有一个.java(driver.java)文件,我正在尝试编译并从命令行运行。它使用名为EXT.jar
的外部库,其结构只是一个名为EXT的文件夹,里面有几十个类。
所以我跑:
javac -cp EXT.jar driver.java
这样就可以很好地编写课程。
然后当我跑:
java -cp EXT.jar driver
我得到java.lang.NoClassDefFoundError
。
奇怪的是,如果我解压缩JAR(所以现在我在根目录中有一个名为EXT的文件夹),最后一个命令工作得很好!!司机将执行!
有什么方法可以让driver.class从EXT.jar/EXT/*class
而不是实际的EXT文件夹中查找需要的类文件?
谢谢!
答案 0 :(得分:19)
您正在将类编译到本地目录。因此,当您运行它时,您需要在类路径中包含当前目录。 E.g:
java -cp .;EXT.jar driver
或者在linux中:
java -cp .:EXT.jar driver
按照你现在的方式,你说你的类路径只是 EXT.jar(以及CLASSPATH环境变量中的任何内容)而没有别的(这就是当前目录的原因) ,其中包括driver.class,不包括在内)