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

发布于 2024-08-20 01:53:19 字数 30 浏览 5 评论 0原文

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

Can I access the values defined in a java manifest from code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

窗影残 2024-08-27 01:53:19

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

java.lang.Package 提供对 的访问ImplementationTitleImplementationVendor, 实现版本SpecificationTitle, SpecificationVendorSpecificationVersion

有关签名类的信息可以使用 CodeSource 找到 类,可以通过 Class.getProtectionDomain().getCodeSource()

Many of the values in the MANIFEST.MF can be accessed programmatically without having to find and/or open the jar file itself.

The class java.lang.Package provides access to the ImplementationTitle, ImplementationVendor, ImplementationVersion, SpecificationTitle, SpecificationVendor and the SpecificationVersion.

Information about signed classes can be found using the CodeSource class, which can be retrieved via Class.getProtectionDomain().getCodeSource()

眼中杀气 2024-08-27 01:53:19

使用 JarFile 然后调用 getManifest() 来获取 清单。之后您可以适当地访问属性。

Open the file with JarFile and then call getManifest() to get the Manifest. After that you can access the attributes appropriately.

窝囊感情。 2024-08-27 01:53:19

下面是一个从 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());
});

Here's a simple example of reading the main attributes from a JAR's manifest in situ. It's handy for checking up on what's actually there. In outline,

var jar = new JarFile(name);
var manifest = jar.getManifest();
var map = manifest.getMainAttributes();
map.entrySet().forEach(e -> {
    System.out.println(e.getKey()
        + ": " + e.getValue());
});
剩一世无双 2024-08-27 01:53:19

使用以下方式检测外部 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();
   }

Use following way to detect External Jar/SDK MANIFEST.MF Info. We could use this info for detecting Jar version etc. Use 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();
   }
叶落知秋 2024-08-27 01:53:19

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

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

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

Try com.jcabi.manifests.Manifests utility class from jcabi-manifests. Using this class you can read all available MANIFEST.MF files with one liner:

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

Also, see this article: http://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文