可以通过编程方式访问 MANIFEST.MF 中定义的值吗?

问题描述 投票:0回答:5

我可以从代码访问 java 清单中定义的值吗?

java android jar manifest
5个回答
19
投票

可以通过编程方式访问 MANIFEST.MF 中的许多值,而无需查找和/或打开 jar 文件本身。

java.lang.Package
提供对
ImplementationTitle
ImplementationVendor
ImplementationVersion
SpecificationTitle
SpecificationVendor
SpecificationVersion》的访问

有关签名类的信息可以使用

CodeSource
类找到,可以通过
Class
.getProtectionDomain()
.getCodeSource()

检索该类

11
投票

使用

JarFile
打开文件,然后调用
getManifest()
获取
Manifest
。之后您就可以适当地访问属性了。


5
投票

这是一个简单的示例,从 JAR 的清单原位读取主要属性。它可以很方便地检查实际存在的内容。概括地说,

var jar = new JarFile(name);
var manifest = jar.getManifest();
var map = manifest.getMainAttributes();
map.entrySet().forEach(e -> {
    System.out.println(e.getKey()
        + ": " + e.getValue());
});

4
投票

使用以下方式检测External Jar/SDK MANIFEST.MF信息。我们可以使用此信息来检测 Jar 版本等。使用 http://docs.oracle.com/javase/6/docs/api/java/util/jar/Manifest.html

  public void getSDKInfo() {
    Package pkg = Manifest.class.getPackage();
    String specTitle = pkg.getSpecificationTitle();
    String vendor = pkg.getSpecificationVendor();
    String version = pkg.getSpecificationVersion();
   }

0
投票

尝试使用 jcabi-manifests

 中的 
com.jcabi.manifests.Manifests 实用程序类。使用此类,您可以通过一行读取所有可用的 MANIFEST.MF 文件:

String name = Manifests.read("Foo-Name");

另外,请参阅这篇文章:http://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html

© www.soinside.com 2019 - 2024. All rights reserved.