gpt4 book ai didi

Java Jar 文件的 java.lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 11:41:36 24 4
gpt4 key购买 nike

我正在尝试为我的 Java 文件之一创建一个 jar 文件。但是,一旦我创建它并尝试运行它,我就会收到 java.lang.NoClassDefFoundError。

我执行了以下操作来创建 jar。该文件是 Worker.java,位于 src/beatDB 中。

jar cfm Worker.jar Manifest.txt src/beatDB

我的Manifest.txt文件只是

主类:主类:beatDB.Worker\n(后换行)

当我运行 java -jar Worker.jar 时,出现此错误。

Exception in thread "main" java.lang.NoClassDefFoundError:
beatDB/Worker
Caused by: java.lang.ClassNotFoundException: beatDB.Worker
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

但是,如果我运行 javabeatDB/Worker,该文件运行正常。

有人知道如何解决这个问题吗?

最佳答案

您应该将 list 与 .class 文件一起打包,而不是 .java 文件。

.java 文件包含源代码。

.class 文件包含已编译的代码。对于 Java,它称为字节码。

您希望类的包结构反射(reflect)在您的 jar 文件中。如果您在 com.example 下有一个 Animal 类,那么您的 jar 文件应包含 com/example/Animal.class

参见How to create jar file with package structure?以获得正确的 jar 文件包结构。

关于Java Jar 文件的 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29478297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com