我从命令行编译java。
我可以跑:
javac test.java -cp jarfile.jar
现在我以为我可以跑(来自同一个文件夹)
java test -cp jarfile.jar
我也试过
java test
和
java test -cp jarfile
我得到了一个java.lang.NoClassDefFoundError
有任何概念上的错误吗? 我可以假设代码是正确的,因为我可以编译它吗?
答案 0 :(得分:3)
第一个问题是你在类路径之前指定了类名 - 所以它认为-cp
是你的类的命令行参数之一,而不是JVM的一个参数说明在哪里找到课程。
第二个问题 - 可能 - 是您没有在类路径中包含当前目录。你想要:
java -cp jarfile.jar;. test
(在Windows上)或
java -cp jarfile.jar:. test
(在Unix上)
如果您不需要除jar文件中的类以外的任何类,当然,您只需要:
java -cp jarfile.jar test
或者,如果您在jar文件中包含了适当的清单,则可以使用:
java -jar jarfile.jar