我想在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方法一样?
答案 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文件夹中。
这可能不是最好的方式,但它有效!
我希望这可以帮助别人。