【问题标题】:Can values defined in MANIFEST.MF be accessed programmatically?可以以编程方式访问 MANIFEST.MF 中定义的值吗?
【发布时间】:2011-01-13 00:01:25
【问题描述】:

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

【问题讨论】:

    标签: java android jar manifest


    【解决方案1】:

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

    【讨论】:

    • 这更加灵活。谢谢!
    【解决方案2】:

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

    java.lang.Package 类提供对ImplementationTitleImplementationVendorImplementationVersionSpecificationTitleSpecificationVendorSpecificationVersion 的访问。

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

    【讨论】:

    【解决方案3】:

    这里是一个简单的example,它就地从 JAR 的清单中读取主要属性。它可以方便地检查实际存在的内容。

    【讨论】:

      【解决方案4】:

      尝试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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2012-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多