簡體   English   中英

讓Java Applet查找單個jar文件中嵌入的jar庫

[英]Getting Java Applet to find jar libraries embedded in single jar file

我的Java Applet遇到了一些麻煩,它使用嵌入式jar庫在網頁中工作。 具體來說,對於在jar文件中打包的庫中包含的類,我得到了NoClassDefFoundError,這些文件本身包含在我的Applet的單個jar文件中。 Applet啟動器可以找到后者的常規類(即,嵌套jar文件中未包含的常規類),而不會出現任何問題。

這是我的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添加到archive屬性,但這沒有用。

您可以從依賴項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/ .

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

您將需要一個自定義的類加載器,該類加載器知道如何使用它們。 單罐項目提供了這樣的類加載器,並且可以使用ant編寫腳本。 如果使用Eclipse,則Export-> Runnable jar可以選擇直接使用one-jar類加載器創建單個jar。

注意,由於類加載器需要在內存中緩存更多信息,因此內存使用率會更高。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM