16

多くの Java jar に含まれる manifest.mf には、電子メール ヘッダーによく似たヘッダーが含まれています。例を見る [*]

この形式をキーと値のペアに解析できるものが必要です。

Map<String, String> manifest = <mystery-parse-function>(new File("manifest.mf"));

「parse manifest.mf」「manifest.mf format」などについて少しググってみたところ、ヘッダーの意味に関する多くの情報が見つかりました (OSGI バンドル、標準 Java jar など)。を探しています。

いくつかの manifest.mf ファイルの例を見ると、おそらくそれを解析するために何かを実装できます (フォーマットをリバース エンジニアリングします) が、実装が実際に正しいかどうかはわかりません。したがって、同じ問題を抱えているため、他の誰かがすばやくまとめた解析関数も探していません)。

私の質問に対する適切な回答は、形式の仕様を示してくれる可能性があります (そのため、独自の正しい解析関数を作成できます)。最良の回答は、既に正しい実装が行われている既存のオープンソース ライブラリを示しています。

[*] = https://gist.github.com/kdvolder/6625725

4

1 に答える 1

23

MANIFEST.MF ファイルは、 Manifestクラスで読み取ることができます。

Manifest manifest = new Manifest(new FileInputStream(new File("MANIFEST.MF")));

次に、次のようにしてすべてのエントリを取得できます

Map<String, Attributes> entries = manifest.getEntries();

そして、すべての主要な属性を行うことによって

Attributes attr = manifest.getMainAttributes();

実際の例

私のMANIFEST.MFファイルはこれです:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build

私のコード:

Manifest manifest = new Manifest(new FileInputStream(new File("MANIFEST.MF")));
Attributes attr = manifest.getMainAttributes();

System.out.println(attr.getValue("Manifest-Version"));
System.out.println(attr.getValue("X-COMMENT"));

出力:

1.0
Main-Class will be added automatically by build
于 2013-09-19T16:08:17.460 に答える