2012-10-14 88 views
1

我有一個可執行.jar -File其作品,但我想一些文件添加到的.jar-文件​​與其他程序。我的想法是使用7zip命令行擴展,但是當我嘗試向.jar-File添加內容時。我使用這個命令:7zip的命令行 - 創建可執行罐子

7za.exe a -t7z C:\myfiles\thejar.jar C:\filestoadd\* -r

每次我嘗試這樣做的CMD引發我一個錯誤,說:

Error: C:\myfiles\thejar.jar is not supported archive

好吧,好吧。然後,我的想法是解壓縮文件thejar.jar,將文件添加到提取文件thejar.jar的目錄中,並創建.zip,其中擴展名爲.jar。當我這樣做時,文件thejar.jar比之前小了大約1MB,並且向其添加了文件。我嘗試了不同的壓縮方法,但它總是較小。當我試圖執行.jar時,彈出一條錯誤消息並說Invalid or corrupt jarfile。我已經搜索了我的問題,但我現在還沒有得到答案......你能幫我嗎?

+0

http://stackoverflow.com/questions/2223434/appending-files-to-a-zip-file-with-java可以幫助你做你的純Java需要。 –

回答

2

簡單/推薦的解決方案是使用包含在每一個Java JDK的jar命令將其它文件添加到JAR。

使用7zip的麻煩,或任何其他「標準」的壓縮工具是你可能會意外地使用一些現代的壓縮文件的功能,在Java工具不明白。

+0

是的,我已經想到了,但這意味着我的程序的用戶需要安裝JDK。我可以複製'jar.exe',但我不知道這是否違反了Oracle的版權。 – DigitalClark

+0

噢,嗯,jar.exe現在可以工作,但是我允許爲我的項目複製'jar.exe'和'jli.dll'嗎?我不想侵犯任何版權,所以...(這個項目對我來說是非盈利的) – DigitalClark

+0

你說的是「一個可執行的jar文件」,所以我們可以安全地假設你的用戶有一個JRE,即使不是JDK 。在這種情況下,另一種方法是編寫一些使用Ant構建JAR的代碼,或者使用ZipOutputStream(這是'jar'命令內部使用的內容)自己編寫代碼。 –

1

-t7z將創建7Z壓縮包,而不是拉鍊。您需要改爲-tzip

+0

謝謝,現在它可以工作,但我不能執行'.jar'-File ...它是sais '無效或損壞的jarfile'再次... – DigitalClark