簡體   English   中英

7zip 命令行 - 創建可執行的 jars

[英]7zip command line - Create executable jars

我有一個可以運行的可執行文件.jar -File,但我想用另一個程序將一些文件添加到 .jar-File 中。 我的想法是使用 7zip 命令行擴展,但是當我嘗試向.jar -File 添加一些東西時。 我使用這個命令:

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文件的目錄中,並創建一個擴展名為.jar.zip 當我這樣做時,文件thejar.jar比以前小了大約 1MB 其中添加了文件。 我嘗試了不同的壓縮方法,但它總是更小。 當我嘗試執行.jar ,會彈出一條錯誤消息並說Invalid or corrupt jarfile 我已經用谷歌搜索了我的問題,但我現在還沒有得到答案......你能幫我嗎?

一種簡單/推薦的解決方案是使用每個Java JDK中包含的jar命令,將多余的文件添加到JAR中。

也可以使用JarOutputStream創建一個JAR文件:

使用7zip或任何其他“標准” zip實用程序的麻煩在於,您可能會意外地使用Java實用程序無法理解的某些現代zipfile功能。


您還詢問(在注釋中)是否允許將Oracle JDK / JRE中的jar.exejli.dll復制到您自己的項目中。

  • 閱讀許可證! 我們不是律師,我們不能給您適當的法律建議。

  • 我的理解是,這將違反Oracle許可和版權。 允許嵌入完整的JRE,但不允許選擇櫻桃。

  • 考慮改用OpenJDK。 OpenJDK的許可基於GPL,並且對重新分發原始發行版沒有基於版權的限制。 只要您提供可用的源代碼並為您對其進行的任何更改構建說明,它們甚至都不會進行修改和重新分發... 1


最后,請注意,從Java 11開始,這是沒有意義的。 Oracle現在僅分發完整的JDK。 因此,這意味着如果您的客戶從Oracle安裝“ Java”,則將包含jar命令。


1-您只需要擔心商標。 基本上,商標許可說如果您以非許可的方式偏離“標准”,則不允許將其稱為“ Java”產品。 查找自己的詳細信息。

-t7z將創建7z存檔,而不是zip。 您需要-tzip代替。

我知道這是一篇舊帖子,但如果有人正在搜索信息,以下內容很好用,並且制作了一個可以正確執行的 jar,我自己瀏覽了這篇文章,尋找信息,最后想出了以下內容。

對我來說,這種方法是做我需要的最簡單的方法,而且比使用 jar 更容易、更快,而且作為批處理文件效果很好

C:\\Progra~1\\7-Zip\\7z.exe a -tzip -mx9 -spf -r Filename.jar *

暫無
暫無

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

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