Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.jar库的Java命令行问题_Java_Command Line_Jar_Compilation - Fatal编程技术网

.jar库的Java命令行问题

.jar库的Java命令行问题,java,command-line,jar,compilation,Java,Command Line,Jar,Compilation,我有一个.java(driver.java)文件,我正试图从命令行编译和运行。它使用名为EXT.jar的外部库,其结构只是一个名为EXT的文件夹,其中包含几十个类 所以我跑: javac -cp EXT.jar driver.java 这可以很好地编译类 然后当我跑步时: java -cp EXT.jar driver 我得到一个java.lang.NoClassDefFoundError 奇怪的是,如果我打开JAR(现在我在根目录中有一个名为EXT的文件夹),最后一个命令就可以正常工作了!

我有一个.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文件夹中查找所需的类文件


谢谢

您正在将类编译到本地目录。因此,在运行它时,需要在类路径中包含当前目录。例如:

java -cp .;EXT.jar driver
或者在linux中:

java -cp .:EXT.jar driver

按照现在的方式,您可以说您的类路径只有EXT.jar(以及classpath环境变量中的任何内容),而没有其他内容(这就是为什么当前目录,driver.class所在的目录被排除在外)

可以。我显然需要等15分钟才能接受答案:)Thanx Matt,你的答案在一个罐子的情况下对我有效,但现在我需要两个使用另一个罐子。在我的项目中,两个JAR都位于一个名为“libs”的文件夹中。但无法让它工作。我正在使用Ubuntu。请help@AndroidGuy您可以继续列出jar,用冒号分隔。例如,
java-cp.:libs/one.jar:libs/two.jar MainClass
这只是我个人参考的一个注释,但您必须始终首先指定类路径,然后是可执行字节码(java类)名称!例如,以下内容对我不起作用(开始拉头发):
javamyapp-cp。;EXT.jar
虽然效果不错:
java-cp。;EXT.jar MyApp
我肯定@AndroidGuy现在已经找到了答案,但是对于其他人来说,
java-cp.:libs/*MainClass
涵盖了n JARs的情况