Java Jar文件的java.lang.NoClassDefFoundError

时间:2015-04-06 19:34:24

标签: java eclipse jar

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

我做了以下创建jar。该文件是Worker.java,它位于src / beatDB。

jar cfm Worker.jar Manifest.txt src/beatDB

我的Manifest.txt文件只是

Main-Class: Main-Class: 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)

但是,如果我运行java beatDB/Worker,文件运行正常。

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

1 个答案:

答案 0 :(得分:1)

您应该将清单与.class文件一起使用,而不是.java文件。

.java文件包含源代码。

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

您希望类的包结构能够反映在您的jar文件中。如果在com.example下有一个Animal类,那么你的jar文件应该包含com / example / Animal.class

请参阅How to create jar file with package structure?了解正确的jar文件包结构。