Java 7zip命令行-创建可执行JAR
我有一个可执行的Java 7zip命令行-创建可执行JAR,java,windows,zip,cmd,7zip,Java,Windows,Zip,Cmd,7zip,我有一个可执行的.jar-文件,可以运行,但我想用另一个程序将一些文件添加到.jar文件中。我的想法是使用7zip命令行扩展名,但是当我尝试向.jar-文件添加内容时。我使用以下命令: 7za.exe a-t7z C:\myfiles\thejar.jar C:\filestoadd\*-r 每次我尝试这样做时,CMD都会抛出一个错误并说: 错误:C:\myfiles\thejar.jar不支持存档 嗯,好的。然后我的想法是解压缩文件thejar.jar,将文件添加到从thejar.jar中提取
.jar
-文件,可以运行,但我想用另一个程序将一些文件添加到.jar文件中。我的想法是使用7zip命令行扩展名,但是当我尝试向.jar
-文件添加内容时。我使用以下命令:
7za.exe a-t7z C:\myfiles\thejar.jar C:\filestoadd\*-r
每次我尝试这样做时,CMD都会抛出一个错误并说:
错误:C:\myfiles\thejar.jar不支持存档
嗯,好的。然后我的想法是解压缩文件
thejar.jar
,将文件添加到从thejar.jar
中提取文件的目录中,并创建一个扩展名为.jar
的.zip
。当我这样做的时候,通过添加文件,jar.jar文件比以前小了大约1MB。我尝试了不同的压缩方法,但总是更小。当我试图执行.jar
时,弹出一条错误消息,说无效或损坏的jarfile
。我已经用谷歌搜索了我的问题,但现在还没有答案。。。您能帮助我吗?简单/推荐的解决方案是使用每个Java JDK中包含的jar
命令将额外的文件添加到jar中
还可以使用JarOutputStream
创建JAR文件:
您还询问(在评论中)是否允许将Oracle JDK/JRE中的
jar.exe
和jli.dll
复制到您自己的项目中
- 阅读许可证我们不是这里的律师,我们无法为您提供适当的法律建议
- 我的理解是,这将违反Oracle许可证和版权。允许嵌入完整的JRE,但不允许采摘樱桃
- 考虑改用OpenJDK。OpenJDK的许可是基于GPL的,并且在重新发布普通发行版时没有基于版权的限制。甚至没有修改和重新分发它。。。只要您为对it1所做的任何更改提供可用的源代码和构建说明
最后,请注意,这在Java11以后的版本中是没有实际意义的。Oracle现在只分发完整的JDK。这意味着,如果您的客户从Oracle安装“Java”,则将包括
jar
命令
1-你只需要担心商标。基本上,商标许可证规定,如果产品以不允许的方式偏离“标准”,则不允许将其称为“Java”等。自己查找详细信息。
-t7z
将创建7z存档,而不是zip。您需要-tzip
。谢谢,现在它可以工作了,但我无法执行.jar
-File。。。它再次表示jarfile无效或损坏……是的,我已经想到了,但这意味着我程序的用户需要安装JDK。我可以复制jar.exe
,但我不知道这是否侵犯了Oracle的版权。哦,是的,好吧,jar.exe现在可以工作了,但是我可以为我的项目复制jar.exe
和jli.dll
?我不想侵犯任何版权,所以。。。(这个项目对我来说是非营利性的)你说从“一个可执行的jar文件”开始,这样我们就可以安全地假设你的用户有一个JRE,即使不是JDK。在这种情况下,另一种方法可能是编写一些使用Ant构建JAR的代码,或者自己使用ZipoutStream(这是JAR
命令在内部使用的)来编写JAR。谢谢我会看看我能做什么。但首先,我还有一个问题。我可以复制jar.exe
和jli.dll
(需要jar.exe
)并将其添加到我自己的项目中吗?我这样问是因为这是Oracle制作的,我不想侵犯他们的版权。这意味着我将重新发布它并重新发布(这对我来说是非盈利的)。可以帮助您在纯Java中完成所需的操作。