Java - getManifest()问题:不是第一个条目

时间:2012-04-19 08:15:45

标签: java jar manifest manifest.mf

我想在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方法一样?

1 个答案:

答案 0 :(得分:0)

最后,我找到了一种方法来实现它。

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

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

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

这可能不是最好的方式,但它有效!

我希望这可以帮助别人。