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 回答
3

这是一个在线漂亮的清单打印机; https://apinx.dk/javamanifest/

您可以拖放 .jar 文件或复制粘贴 manifest.mf 本身。

于 2019-07-26T20:48:38.863 回答
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

用 javascript 解析它;)这是一个JSFiddle,可以漂亮地打印一个 OSGi MANIFEST.MF 文件:

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 回答
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

打印命令显示 Import-Package 和 Export-Package 更好:

java -jar bnd-2.2.0.jar print example.jar
于 2014-05-09T19:23:45.733 回答
0

如果您使用的是 eclipse,则可以使用由配置的插件清单编辑器

在此处输入图像描述

于 2012-10-15T13:47:52.237 回答
0

我在7-Zip中打开了我的 jar (任何解压缩器/解压缩器都可以),然后您可以选择将 MANIFEST.MF 文件复制到计算机的其他位置。我将它复制到我的桌面,然后用 Visual Studio Code 打开。任何文本编辑器都可以工作。

或者,我用Atom打开罐子。它显示了我的罐子的整个树结构。我双击了 MANIFEST.MF 文件,它就在 Atom 中打开了。

于 2019-09-10T20:52:23.040 回答