是否有任何工具可以从jar中获取manifest.mf文件并很好地显示内容?
特别是在使用OSGi包时,Export-Package和Import-Package条目会变得非常大并且难以完全解决正在发生的事情。添加到这个简单的关键字文本搜索由于换行而不是100%可靠。
答案 0 :(得分:5)
我相信BND tools的eclipse插件做得相当不错。它有一个用于查看jar文件的编辑器。
答案 1 :(得分:3)
这是一个清单文件的在线漂亮打印机,可选排序:
答案 2 :(得分:2)
bnd本身可以从命令行运行并打印所有细节:
java -jar biz.aQute.bnd.run.jar xx.jar
您还可以点击bndtools中的jar并选择打印选项卡,这会为您提供比您可能需要的更多详细信息。
下载输入bnd help以获取有关命令的信息。
答案 3 :(得分: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之外开发的人)有用。
答案 4 :(得分:2)
这是清单的在线漂亮打印机; https://apinx.dk/javamanifest/
您可以拖放.jar文件或将manifest.mf本身粘贴粘贴。
答案 5 :(得分:1)
我从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
答案 6 :(得分:0)
如果您使用的是eclipse,则可以使用
配置的插件清单编辑器
答案 7 :(得分:0)