我对java程序的运行过程感到困惑,也许你能帮忙。
我在 ~/working_dir/org/project/
中有几个具有主要功能的 .java 文件,我想将它们打包在 jar 中来运行它们。我愿意:
cd ~/working_dir/org/projectname
javac -classpath $CLASSPATH *.java
cd ~/working_dir/
jar cf myjar.jar org/
然后尝试通过执行以下操作来运行 jar 中的类之一:
java -cp myjar.jar org.project.SomeClass
并得到
Exception in thread "main" java.lang.NoClassDefFoundError: org/project/SomeClass
Could not find the main class: org.project.SomeClass
我做错了什么?这些类编译时没有任何错误,并且 jar tf myjar.jar
显示它们确实存在。据我所知,我不需要创建 list 文件,因为我提供了我想在运行时运行主函数的类 - 还是我错了?
非常感谢您的帮助!
最佳答案
如果分解的 jar org/project/SomeClass 位于您当前的工作目录下:
/ <- you are here
+---/org
|
+-----/project
|
+--------SomeClass.class
尝试 java -cp 。改为 org.project.SomeClass
关于尽管提供了 jar 文件,但未找到 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125286/