我想以编程方式在Java中生成一个jar文件。当未混淆输入jar文件时,此方法效果很好。当我在其上使用混淆器时,第一个条目不再是清单,因此无法生成新文件...

这是我的代码:

JarInputStream input = new JarInputStream(getClass().getResourceAsStream("/obfuscated_jar.jar"));
JarOutputStream output = new JarOutputStream(new FileOutputStream("generated_jar.jar"), input.getManifest());


input.getManifest()返回null,因为清单不在第一位。

我已经对其进行了一些搜索,它似乎是JarInputStream的已知问题。所以这是我的问题:有可能解决吗?喜欢编写自己的getManifest方法或其他内容?

最佳答案

最终,我找到了一种方法。

我将文件MANIFEST.MF保存到主jar中,并使用该代码替换了input.getManifest()

Manifest mf = new Manifest();
mf.read(getClass().getResourceAsStream("/lib/manifest.mf"));


在这种情况下,我从manifest.mf中提取了obfuscated_jar.jar并将其粘贴到主jar文件的lib文件夹中。

那可能不是最好的方法,但是它可行!

我希望这可以帮助某人。

关于java - Java-getManifest()问题:不是第一个条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10224123/

10-12 21:53