我想以编程方式在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/