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