Java 使用清单、音频和图像文件夹(包括外部jar)创建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/*
- 计划
- 用户界面(包文件夹,包括与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
。