2012-08-03 88 views
7

我爲用java編寫的軟件創建了新的模塊。這個軟件是從jar文件運行的。我的類正在擴展這個軟件中的類。我想編寫一個向jar文件添加新類的插件。我知道如何將jar文件提取到目錄中,並使用java.util.jar包將它們添加到jar文件中,但是由於有很多文件要從文件中提取,是否可以在不提取文件的情況下添加新類以某種方式直接到文件夾。如何將新的java類添加到jar文件中的現有類

+1

我想起了我的世界改裝。出於好奇,你是否編寫了這個你試圖擴展自己的軟件?在這種情況下,有更好的方法來使用動態類加載。 – Wug 2012-08-03 18:19:54

+0

不需要修改現有的jar文件。只需將這些類放在自己的jar中,並確保兩個jar都在類路徑中。 – 2012-08-03 18:21:18

+0

可能由同一用戶重複:http://stackoverflow.com/questions/11852954/changing-code-at-runtime-in-java – 2012-10-19 12:10:11

回答

4
jar uf jar-file input-file(s) 

將允許在沒有提取的情況下在jar中添加new files/update現有文件。

12

您可以使用命令行工具jar使用以下命令

jar uf foo.jar foo.class 
+0

這隻有50%的工作,因爲該命令不會把類放在其相應的包樹結構。 – m0skit0 2016-10-10 14:48:10

+2

@ m0skit0要將類放入tres結構中,您需要傳遞類名稱和目錄結構。 jar uf foo.jar /com/test/foo.class – 2016-10-11 08:42:50

4

你的問題表明,要以編程方式做到這一點,

從看來,你至少需要從現有的JarFile一個JarInputStream,使用getNextJarEntry遍歷條目,並寫入與條目的JarOutputStream,也應用新的JarEntry添加自己的新文件的文檔每個新文件的對象。

Here's從頭開始編寫一個jar程序,這將大大地擴展到你的情況的示例代碼,所不同的是,大部分的JarEntry對象將從一個JarInputStream到來。

相關問題