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"));

この場合、メインの jar ファイルの lib フォルダーから抽出しmanifest.mfobfuscated_jar.jar貼り付けます。

それはおそらく最善の方法ではありませんが、うまくいきます!

これが誰かを助けることができることを願っています。

于 2012-04-19T08:29:16.947 に答える