[英]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.exe
和jli.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.