我得到.jar文件的路徑作爲我的Java應用程序的用戶輸入。我需要在類路徑中添加一個類到該.jar文件,然後將.jar文件發送到外部服務(通過網絡)。其他站點上的服務必須能夠從.jar文件加載類,包括我在應用程序中添加的那個類。以編程方式將類添加到現有的JAR文件
該解決方案應該具備以下屬性:
- 通用:應該對任何能想到的工作的.jar包含類的用戶可以給我。
- 自動:類添加必須由我的Java應用程序完成。
要添加到.jar文件的類具有不與該JAR中的任何其他類相沖突的名稱。
我得到.jar文件的路徑作爲我的Java應用程序的用戶輸入。我需要在類路徑中添加一個類到該.jar文件,然後將.jar文件發送到外部服務(通過網絡)。其他站點上的服務必須能夠從.jar文件加載類,包括我在應用程序中添加的那個類。以編程方式將類添加到現有的JAR文件
該解決方案應該具備以下屬性:
要添加到.jar文件的類具有不與該JAR中的任何其他類相沖突的名稱。
由於jar是普通的zip文件,因此可以使用java.util.zip
提供的工具。
要在其他人所說添加,如果你需要加載上另一端的JAR,你應該檢查http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html
我明白,你有你的類路徑,而你想要做什麼是爲了將其注入到現有的JAR文件中而獲得其字節陣列表示。
整潔。
哈瓦看看javax.tools
封裝,可提供JDK 1.6及更高版本:
http://docs.oracle.com/javase/6/docs/api/javax/tools/package-summary.html
可以以編程方式編譯代碼,並利用現有的機制,有序列化的字節碼。如果不是的話,ASM也會有幫助:http://asm.ow2.org/
我想說java.util.jar。 –
@EdwinDalorzo,但我怎麼用'java.util.jar'或'java.util.zip'軟件包將某些東西寫入現有的.jar?這兩個軟件包似乎只允許閱讀,因爲我看到它... – drasto
請參閱如何將文件添加到現有的存檔:http://stackoverflow.com/questions/3048669/how-can-i-add-entries-到現有的zip文件在java – mbelow