我正在尝试创建一个具有以下项目内容的 jar 文件
- 项目
- user_interface(包文件夹,包括与 GUI 相关的所有 .classes)
- function_operations(包文件夹,包括与操作相关的所有 .classes)
- 声音(文件夹包括所有声音文件)
- 图标(包括所有图像和图标)
- jars(包括所有外部 jar 文件)
- manifest.txt(有一行 *Main-Class: user_interface.messengerGUI* 和两个输入)
我正在使用命令
jar cvfm helloBuddy.jar manifest.txt user_interface/*.class function_operations/*.class icons/ sounds/
它成功创建了jar文件,但在执行时出现以下错误
JAI-MATA-DI-LINUX 项目# java -jar helloBuddy.jar 线程“main”中的异常 java.lang.NoClassDefFoundError: user_interface/messengerGUI 原因:java.lang.ClassNotFoundException: user_interface.messengerGUI at java.net.URLClassLoader$1。在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 的 java.security.AccessController.doPrivileged(Native Method) 运行(URLClassLoader.java:217)在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到主类:user_interface.messengerGUI。程序将会退出。
另一个问题是如何包含外部罐子?
编辑:终于成功地形成了罐子。使用 eclipse 我可以创建 jar 文件。但是当我运行它时会出现以下错误
线程“main”中的异常 java.lang.NoClassDefFoundError: org/jivesoftware/smack/ChatManagerListener 原因:java.lang.ClassNotFoundException: org.jivesoftware.smack.ChatManagerListener at java.net.URLClassLoader$1.run(URLClassLoader.java:217 ) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$ AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 找不到主类:user_interface.messengerGUI。程序将会退出。
我在项目中包含了一些外部 jar 文件。org/jivesoftware/smack/ChatManagerListener 这个类属于smackx.jar 文件之一。所以这个错误是添加到项目中的外部 jar 文件。任何线索我该如何解决这个问题?