尽管提供了 jar 文件,但未找到 java 类

标签 java jar

我对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/

相关文章:

java - 将 System.out 转移到另一个类并从中读取

java - "Code Too Large"资源文件中初始化数组的值太多时出现错误

java - 线程 "main"java.lang.NoClassDefFoundError : java/util/function/Predicate 中的异常

java - Scala 和 Kotlin 的手动 JAR 编译

java - 从另一个 servlet 调用 servlet

java - Firebase DB 警告 : "Using an unspecified index. Consider adding ' ". indexOn"以获得更好的性能

java - JXTreeTable 可编辑示例?

java - 从 eclipse 运行配置中提取命令行参数

java - 使用编译的类文件和现有的 MANIFEST.MF 文件创建 jar 文件

jar 中没有配置文件的 Java jar 创建