2012-11-27 73 views
0

我得到.jar文件的路徑作爲我的Java應用程序的用戶輸入。我需要在類路徑中添加一個類到該.jar文件,然後將.jar文件發送到外部服務(通過網絡)。其他站點上的服務必須能夠從.jar文件加載類,包括我在應用程序中添加的那個類。以編程方式將類添加到現有的JAR文件

該解決方案應該具備以下屬性:

  • 通用:應該對任何能想到的工作的.jar包含類的用戶可以給我。
  • 自動:類添加必須由我的Java應用程序完成。

要添加到.jar文件的類具有不與該JAR中的任何其他類相沖突的名稱。

回答

1

由於jar是普通的zip文件,因此可以使用java.util.zip提供的工具。

+3

我想說java.util.jar。 –

+0

@EdwinDalorzo,但我怎麼用'java.util.jar'或'java.util.zip'軟件包將某些東西寫入現有的.jar?這兩個軟件包似乎只允許閱讀,因爲我看到它... – drasto

+0

請參閱如何將文件添加到現有的存檔:http://stackoverflow.com/questions/3048669/how-can-i-add-entries-到現有的zip文件在java – mbelow

0

我明白,你有你的類路徑,而你想要做什麼是爲了將其注入到現有的JAR文件中而獲得其字節陣列表示。

整潔。

哈瓦看看javax.tools封裝,可提供JDK 1.6及更高版本:

http://docs.oracle.com/javase/6/docs/api/javax/tools/package-summary.html

可以以編程方式編譯代碼,並利用現有的機制,有序列化的字節碼。如果不是的話,ASM也會有幫助:http://asm.ow2.org/

+0

嗯,我真的不需要編譯任何東西......在我的應用程序項目中將有一個編譯類。我們可以將它視爲我需要注入現有JAR的資源。 – drasto

+1

如果你可以找到實際的'.class'文件,那麼你需要做的就是使用'java.util.jar'包,就像這裏提供的其他答案一樣。 – Isaac

相關問題