我正在尝试为我的一个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
,文件运行正常。
有谁知道如何解决这个问题?
答案 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文件包结构。