繁体   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