6

jarファイルからmanifest.mfファイルを取得し、内容を適切に表示するツールはありますか?

特に、OSGiバンドルを使用する場合、Export-PackageおよびImport-Packageエントリは非常に大きくなり、何が起こっているのかを正確に把握するのが困難になる可能性があります。この単純なキーワードに追加されたテキスト検索は、改行のために100%信頼できるわけではありません。

4

8 に答える 8

5

BND ツール用の Eclipse プラグインは、かなりうまく機能すると思います。jar ファイルを表示するためのエディターがあります。

于 2012-10-15T13:51:29.070 に答える
3

以下はマニフェスト ファイル用のオンラインのプリティ プリンターで、オプションで並べ替えが可能です。

https://robinst.github.io/jar-manifest-formatter/

于 2015-04-16T02:34:33.873 に答える
2

bnd 自体はコマンド ラインから実行でき、すべての詳細を出力します。

 java -jar biz.aQute.bnd.run.jar xx.jar

bndtools で jar をクリックして印刷タブを選択することもできます。これにより、おそらく必要以上の詳細が得られます。

bnd はhttps://bndtools.ci.cloudbees.com/job/bnd.master/lastSuccessfulBuild/artifact/dist/bundles/biz.aQute.bnd/biz.aQute.bnd-latest.jarからダウンロードできます。

コマンドに関する情報については、bnd help と入力してください。

于 2012-10-16T08:33:28.780 に答える
2

Maven Central から bnd.jar をダウンロードしました。
http://repo1.maven.org/maven2/biz/aQute/bnd/bnd/2.2.0/bnd-2.2.0.jar

はい、実行できます。マニフェストがきれいに出力されます。

java -jar bnd-2.2.0.jar example.jar

print コマンドは、Import-Package と Export-Package をさらに適切に表示します。

java -jar bnd-2.2.0.jar print example.jar
于 2014-05-09T19:23:45.733 に答える
2

javascript で解析してください ;) OSGi MANIFEST.MF ファイルをプリティプリントするためのJSFiddleを次に示します。

http://jsfiddle.net/scotch/5WJwd/embedded/result/

var sectionsText = text.split(/\n\n\n/),
    sections = {},
    sectionText,
    name,
    body,
    packagesText,
    packages,
    packageName,
    packageBody;

for (var i in sectionsText) {
    sectionText = sectionsText[i];
    name = sectionText.substr(0, sectionText.indexOf(": "));
    body = sectionText.substr(sectionText.indexOf(": ") + 2);
    sections[name] = body;

    if (name.indexOf("Package") != -1) {
        body = body.replace(/[\n\r] /g, '');
        body = body.replace(/(,)(?=(?:[^"]|"[^"]*")*$)/g, "$1\n");
        packagesText = body.split(/\n/);
        packages = {};
        for (var i in packagesText) {
            packageBody = packagesText[i];
            packageName = packageBody.substr(0, packageBody.indexOf(";"));
            packageBody = packageBody.substr(packageBody.indexOf(";")+1);

            if (collapse) {
                packageBody = packageBody.replace(/uses:="[^"]*"/g, 'uses:="..."');
            }

            packages[packageName] = packageBody;//.replace(/;/g, ';\n');
        }
        sections[name] = packages;
    }
}

エントリもアルファベット順にソートされるため、比較することができます。誰か (特に Eclipse 以外で開発している人々) にとって役立つことを願っています。

于 2013-11-29T13:16:27.013 に答える
0

Eclipse を使用している場合は、によって構成された Plugin Manifest Editor を使用できます。

ここに画像の説明を入力

于 2012-10-15T13:47:52.237 に答える