2010-06-16 107 views
7

我试图编译并从命令行运行一个.java(driver.java)文件。它使用名为EXT.jar的外部库,其结构只是一个名为EXT的文件夹,其中包含几十个类。.jar库的Java命令行问题

于是我运行:

javac -cp EXT.jar driver.java 

这编译该类就好了。

然后当我运行:

java -cp EXT.jar driver 

我得到一个java.lang.NoClassDefFoundError。奇怪的是,如果我解压JAR(所以现在我有一个名为EXT的根目录中的文件夹),最后一个命令工作得很好!驱动程序将执行!

有没有什么办法可以让驱动程序类从EXT.jar/EXT/*class寻找需要的类文件而不是实际的EXT文件夹?

谢谢!

回答

18

您正在将该类编译为本地目录。所以当你运行它时,你需要在你的类路径中包含当前目录。例如:

java -cp .;EXT.jar driver 

或者在Linux中:

java -cp .:EXT.jar driver 

有了你现在的样子,你说你的类路径是只有 EXT.jar(与无论是在CLASSPATH环境一起变量),没有别的(这就是为什么当前目录,其中driver.class所在的位置,排除)

+0

完美!谢谢! – Monster 2010-06-16 19:00:01

+0

会做。我显然需要等待15分钟才能接受答案:) – Monster 2010-06-16 19:05:57

+0

Thanx Matt,你的回答在我使用单个罐子的情况下可以工作,但现在我需要2使用另一个罐子。这两个罐子都在我的项目中名为“libs”的文件夹中。但无法让它工作。我正在使用Ubuntu。 PLZ帮助 – AndroidGuy 2013-01-31 13:49:42