java - 7zip 命令行 - 创建可执行 jar

标签 java windows zip cmd 7zip

我有一个可以运行的可执行文件 .jar-File,但我想用另一个程序将一些文件添加到 .jar-File。我的想法是使用 7zip 命令行扩展,但是当我尝试向 .jar-File 添加内容时。我使用这个命令:

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

每次我尝试这样做时,CMD 都会向我抛出一个错误并说:

错误:C:\myfiles\thejar.jar 不支持存档

嗯,好的。然后我的想法是解压缩文件 thejar.jar,将文件添加到从 thejar.jar 中提取文件的目录并创建一个 .zip 扩展名为 .jar。当我执行此操作时,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 的,并且对重新分发 vanilla 发行版没有基于版权的限制。甚至不需要修改和重新分发它……只要您提供源代码并针对您对其所做的任何更改构建说明1


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


1 - 您只需担心商标问题。基本上,商标许可规定,如果产品以不允许的方式偏离“标准”,则不允许将其称为“Java”等。自己查找详细信息。

关于java - 7zip 命令行 - 创建可执行 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882059/

相关文章:

c# - Windows 窗体登录

python - 从内存中的 url 下载图像并在内存中创建 zip 存档以发送到浏览器

java - 创建 map 矩阵

Java - 词频

java - Eclipse JDT Core - 解析参数化 super 方法的通用返回类型

windows - X509 证书访问私钥被拒绝

windows - 通过cmd文件在csv文件末尾追加时间

java - AdView 未出现在应用底部

swift3 - iOS Swift 使用 URL 下载和打开文件

javascript - 415(不支持的媒体类型)错误