【发布时间】:2011-01-13 00:01:25
【问题描述】:
我可以从代码中访问 java 清单中定义的值吗?
【问题讨论】:
我可以从代码中访问 java 清单中定义的值吗?
【问题讨论】:
可以通过编程方式访问 MANIFEST.MF 中的许多值,而无需查找和/或打开 jar 文件本身。
java.lang.Package 类提供对ImplementationTitle、ImplementationVendor、ImplementationVersion、SpecificationTitle、SpecificationVendor 和SpecificationVersion 的访问。
可以使用CodeSource 类找到有关签名类的信息,该类可以通过Class.getProtectionDomain().getCodeSource() 检索
【讨论】:
这里是一个简单的example,它就地从 JAR 的清单中读取主要属性。它可以方便地检查实际存在的内容。
【讨论】:
尝试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
【讨论】:
使用以下方式检测外部 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();
}
【讨论】: