让Java Applet查找嵌入在单个jar文件中的jar库

时间:2011-02-17 10:55:56

标签: java jar applet

我在使用Java Applet时遇到了一些麻烦,它使用嵌入式jar库在网页中工作。具体来说,我得到一个NoClassDefFoundError,它包含在jar文件中打包的库中,这些库本身包含在我的Applet的单个jar文件中。后者的常规类(即那些未包含在嵌套jar文件中的类)由Applet启动程序定位,没有任何问题。

这是我的HTML代码:

<applet code="Applet.class" archive="myApplet.jar" width="600" height="600" title="MyApplet">

说,在MyApplet.jar中还有两个jar文件:根级别的library1.jar和library2.jar。如何使它们可访问,以便启动器可以找到它们?我已经尝试将library1.jar和library2.jar添加到存档属性,但这不起作用。

3 个答案:

答案 0 :(得分:1)

您可以从依赖项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/ .

答案 1 :(得分:0)

Java不直接在其他jar文件中支持jar文件。

您需要一个知道如何使用它们的自定义类加载器。 one-jar项目提供了这样的类加载器,并且可以使用ant编写脚本。如果您使用Eclipse,则导出 - &gt; Runnable jar有一个选项,可以直接使用one-jar类加载器创建一个jar。

请注意,由于类加载器需要在内存中缓存更多信息,因此内存使用率会更高。

答案 2 :(得分:0)

您可以使用maven shade插件生成一个包含所有内容的jar。