7zip 命令行 - 创建可执行的 jars

Dig*_*ark 3 java windows zip cmd 7zip

我有一个.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提取文件的目录中,并创建一个.zip扩展名为.jar. 当我这样做时,文件thejar.jar比以前小了大约 1MB 添加了文件。我尝试了不同的压缩方法,但它总是更小。当我尝试执行 时.jar,会弹出一条错误消息并说Invalid or corrupt jarfile. 我已经用谷歌搜索了我的问题,但我现在还没有得到答案......你能帮我吗?

Ste*_*n C 5

简单/推荐的解决方案是使用jar每个 Java JDK 中包含的命令将额外文件添加到 JAR。

也可以使用JarOutputStream以下命令创建 JAR 文件:

使用 7zip 或任何其他“标准”zip 实用程序的问题在于,您可能会不小心使用一些 Java 实用程序不理解的现代 zipfile 功能。


您还询问(在评论中)是否允许您将jar.exejli.dll从 Oracle JDK / JRE复制到您自己的项目中。

  • 阅读许可证! 我们不是这里的律师,我们无法为您提供适当的法律建议。

  • 我的理解是这将违反 Oracle 许可和版权。允许嵌入完整的 JRE,但不允许随意挑选。

  • 考虑改用 OpenJDK。OpenJDK 的许可是基于 GPL 的,并且对重新分发 vanilla 发行版没有基于版权的限制。甚至不需要修改和重新分发它...只要您提供可用的源代码并针对您对其所做的任何更改构建说明1


最后,请注意,这在 Java 11 之后没有实际意义。Oracle 现在只分发完整的 JDK。因此,这意味着如果您的客户从 Oracle 安装“Java”,jar则将包含该命令。


1 - 您只需要担心商标。基本上,商标许可说如果产品以非允许的方式偏离“标准”,则不允许将其称为“Java”等。详情请自行查找。