Можно ли получить программный доступ к значениям, определенным в MANIFEST.MF? - PullRequest
13 голосов
/ 04 февраля 2010

Можно ли получить доступ к значениям, определенным в манифесте Java, из кода?

Ответы [ 5 ]

17 голосов
/ 04 февраля 2010

Многие из значений в файле MANIFEST.MF могут быть доступны программным способом без необходимости искать и / или открывать сам файл jar.

Класс java.lang.Package обеспечивает доступ к ImplementationTitle, ImplementationVendor, ImplementationVersion, SpecificationTitle, SpecificationVendor и SpecificationVersion.

Информацию о подписанных классах можно найти с помощью класса CodeSource, который можно получить с помощью Class.getProtectionDomain().getCodeSource()

11 голосов
/ 04 февраля 2010

Откройте файл с помощью JarFile и затем наберите getManifest(), чтобы получить Manifest. После этого вы можете получить доступ к атрибутам соответствующим образом.

5 голосов
/ 04 февраля 2010

Вот простой пример чтения основных атрибутов из манифеста JAR in situ . Это удобно для проверки того, что на самом деле там.

4 голосов
/ 07 марта 2013

Используйте следующий способ для обнаружения внешнего файла JAR / SDK MANIFEST.MF Info. Мы могли бы использовать эту информацию для определения версии 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 голосов
/ 30 декабря 2012

Попробуйте com.jcabi.manifests.Manifests служебный класс из jcabi-manifest .Используя этот класс, вы можете читать все доступные файлы MANIFEST.MF с одним вкладышем:

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

Также см. Эту статью: http://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html

...