1

我想以编程方式在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 方法之类的?

4

1 回答 1

0

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

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

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

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

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

我希望这可以帮助某人。

于 2012-04-19T08:29:16.947 回答