Mon*_*ter 7 java command-line compilation jar
我有一个.java(driver.java)文件,我正在尝试编译并从命令行运行.它使用被调用的外部库EXT.jar,其结构只是一个名为EXT的文件夹,里面有几十个类.
所以我跑:
javac -cp EXT.jar driver.java
Run Code Online (Sandbox Code Playgroud)
这很好地编译了这个类.
然后当我跑:
java -cp EXT.jar driver
Run Code Online (Sandbox Code Playgroud)
我得到了java.lang.NoClassDefFoundError.
奇怪的是,如果我解压缩JAR(所以现在我在根目录中有一个名为EXT的文件夹),最后一个命令工作得很好!! 司机会执行!
有什么方法可以让driver.class从而EXT.jar/EXT/*class不是实际的EXT文件夹中查找需要的类文件?
谢谢!
Mat*_*att 19
您正在将类编译到本地目录.因此,当您运行它时,您需要在类路径中包含当前目录.例如:
java -cp .;EXT.jar driver
Run Code Online (Sandbox Code Playgroud)
或者在linux中:
java -cp .:EXT.jar driver
Run Code Online (Sandbox Code Playgroud)
按照现在的方式,你说你的类路径只是 EXT.jar(以及CLASSPATH环境变量中的任何内容)而没有别的(这就是为什么当前目录,其中driver.class所在的位置被排除在外) )