让Java小程序查找嵌入在单个jar文件中的jar库
我在获取Java小程序时遇到了一些问题,它使用嵌入式jar库在网页中工作。具体地说,对于包含在jar文件中的库中的类,我得到了一个NoClassDefFoundError,jar文件本身包含在小程序的单个jar文件中。后者的常规类(即嵌套jar文件中不包含的类)由小程序启动器定位,没有任何问题 以下是我的HTML代码:让Java小程序查找嵌入在单个jar文件中的jar库,java,jar,applet,Java,Jar,Applet,我在获取Java小程序时遇到了一些问题,它使用嵌入式jar库在网页中工作。具体地说,对于包含在jar文件中的库中的类,我得到了一个NoClassDefFoundError,jar文件本身包含在小程序的单个jar文件中。后者的常规类(即嵌套jar文件中不包含的类)由小程序启动器定位,没有任何问题 以下是我的HTML代码: <applet code="Applet.class" archive="myApplet.jar" width="600" height="600" title="MyA
<applet code="Applet.class" archive="myApplet.jar" width="600" height="600" title="MyApplet">
比如说,在MyApplet.jar中还有两个jar文件:根级别的library1.jar和library2.jar。我如何使它们可访问,以便启动器可以找到它们?我曾尝试将library1.jar和library2.jar添加到存档属性,但没有成功。Java不支持直接在其他jar文件中添加jar文件 您将需要一个知道如何使用它们的自定义类加载器。该项目提供了这样一个类加载器,并且可以使用ant编写脚本。如果您使用Eclipse,Export->Runnable jar有一个选项,可以直接使用one-jar类加载器创建一个jar
请注意,由于类加载器需要在内存中缓存更多信息,内存使用率将更高。您可以使用maven shade插件生成一个包含所有内容的jar。您可以从依赖项jar中取消对文件的锁定,并将其包含在jar中。假设您有一个bin、src和libs目录
cd bin
find ../libs -type f -name \*.jar -exec jar xfv {} \;
rm -rf bin/META-INF
cd ..
jar cfv yourjar.jar -C bin/ .
谢谢你的回答。我尝试使用FatJAR插件,该插件包含一个jar,但生成的jar文件没有加载到网页中。它甚至找不到我的main类(它现在似乎包含在fatjar文件的main子目录中的main.jar文件中)。我必须在HTML小程序代码中编写什么才能让它找到所有必要的文件?您还需要提供one jar launcher类作为主类。记住启用Java控制台。