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