Можно ли получить программный доступ к значениям, определенным в MANIFEST.MF?
Могу ли я получить доступ к значениям, определенным в манифесте Java, из кода?
5 ответов
Откройте файл с помощью JarFile
а затем позвоните getManifest()
чтобы получить Manifest
, После этого вы можете получить доступ к атрибутам соответствующим образом.
Многие из значений в файле MANIFEST.MF могут быть доступны программным способом без необходимости искать и / или открывать сам файл jar.
Класс java.lang.Package
обеспечивает доступ к ImplementationTitle
, ImplementationVendor
, ImplementationVersion
, SpecificationTitle
, SpecificationVendor
и SpecificationVersion
,
Информацию о подписанных классах можно найти с помощью CodeSource
класс, который можно получить через Class
.getProtectionDomain()
.getCodeSource()
Вот простой пример чтения основных атрибутов из манифеста JAR in situ. Это удобно для проверки того, что на самом деле там.
Используйте следующий способ для обнаружения внешнего файла 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();
}
Пытаться com.jcabi.manifests.Manifests
служебный класс от jcabi-манифестов. Используя этот класс, вы можете читать все доступные файлы MANIFEST.MF с одним вкладышем:
String name = Manifests.read("Foo-Name");
Также см. Эту статью: http://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html