2012-10-14 51 views
1

我有一个可执行.jar -File其作品,但我想一些文件添加到的.jar-文件​​与其他程序。我的想法是使用7zip命令行扩展,但是当我尝试向.jar-File添加内容时。我使用这个命令:7zip的命令行 - 创建可执行罐子

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。我已经搜索了我的问题,但我现在还没有得到答案......你能帮我吗?

+0

http://stackoverflow.com/questions/2223434/appending-files-to-a-zip-file-with-java可以帮助你做你的纯Java需要。 –

回答

2

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

使用7zip的麻烦,或任何其他“标准”的压缩工具是你可能会意外地使用一些现代的压缩文件的功能,在Java工具不明白。

+0

是的,我已经想到了,但这意味着我的程序的用户需要安装JDK。我可以复制'jar.exe',但我不知道这是否违反了Oracle的版权。 – DigitalClark

+0

噢,嗯,jar.exe现在可以工作,但是我允许为我的项目复制'jar.exe'和'jli.dll'吗?我不想侵犯任何版权,所以...(这个项目对我来说是非盈利的) – DigitalClark

+0

你说的是“一个可执行的jar文件”,所以我们可以安全地假设你的用户有一个JRE,即使不是JDK 。在这种情况下,另一种方法是编写一些使用Ant构建JAR的代码,或者使用ZipOutputStream(这是'jar'命令内部使用的内容)自己编写代码。 –

1

-t7z将创建7Z压缩包,而不是拉链。您需要改为-tzip

+0

谢谢,现在它可以工作,但我不能执行'.jar'-File ...它是sais '无效或损坏的jarfile'再次... – DigitalClark