Java 使用清单、音频和图像文件夹(包括外部jar)创建jar文件

Java 使用清单、音频和图像文件夹(包括外部jar)创建jar文件,java,jar,Java,Jar,我正在尝试创建一个jar文件 有以下项目内容 计划 用户界面(包文件夹,包括与GUI相关的所有.class) 函数_操作(包文件夹,包括与操作相关的所有.class) 声音(文件夹包括所有声音文件) 图标(包括所有图像和图标) jar(包括所有外部jar文件) manifest.txt(有一行*主类:user_interface.messengerGUI*和两个输入) 我在使用命令 jar cvfm helloBuddy.jar manifest.txt user_interface/*

我正在尝试创建一个jar文件 有以下项目内容

  • 计划
    • 用户界面(包文件夹,包括与GUI相关的所有.class)
    • 函数_操作(包文件夹,包括与操作相关的所有.class)
    • 声音(文件夹包括所有声音文件)
    • 图标(包括所有图像和图标)
    • jar(包括所有外部jar文件)
    • manifest.txt(有一行*主类: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: 用户界面/信使GUI由以下原因引起: java.lang.ClassNotFoundException:user_interface.Messenger GUI位于 java.net.URLClassLoader$1.run(URLClassLoader.java:217)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:205)位于 loadClass(ClassLoader.java:321)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)位于 找不到java.lang.ClassLoader.loadClass(ClassLoader.java:266) 主类:user_interface.Messenger GUI。程序将退出

另一个问题是如何包含外部jar

编辑:最终取得了一些成功。使用eclipse,我能够创建jar文件。但是,当我运行它时,会出现以下错误

线程“main”java.lang.NoClassDefFoundError中出现异常: org/jivesoftware/smack/ChatManagerListener由以下原因引起: java.lang.ClassNotFoundException: org.jivesoftware.smack.ChatManagerListener位于 java.net.URLClassLoader$1.run(URLClassLoader.java:217)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:205)位于 loadClass(ClassLoader.java:321)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)位于 找不到java.lang.ClassLoader.loadClass(ClassLoader.java:266) 主类:user_interface.Messenger GUI。程序将退出

我在项目中包含了一些外部jar文件。 org/jivesoftware/smack/ChatManagerListener此类属于smackx.jar文件之一。
因此,此错误是由于添加到项目中的外部jar文件而导致的。有什么线索可以解决这个问题吗?

你不能像那样嵌套jar文件,除非你使用像这样的自定义类加载器或工具。

试试这个,这是在eclipse中创建jar或可运行jar的方法,项目中的所有外部库都将包括在内

File -> Export-> Java ->Runnbale JAR file

Launch configuration : your Class containing the public static void main(String[] args)

Export destination : Target place

Library Handling:

Package required libraries into generated JAR

FINISH

我怀疑你的类最终会进入Jar的根目录。jar-tvf helloBuddy.jar的输出是什么?将它作为编辑和使用代码格式复制/通过到问题中。请看一下我的这篇文章,可能会有所帮助,您没有正确地将包(.class文件和图像)添加到.jar文件中。您不能假设将单个类添加到.jar文件中,而是必须包含整个包,因此,如果
user\u interface
是包含所有.class文件的包,那么您可以编写
user\u interface
,而不是编写
user\u interface