2014-11-20 3 views

ответ

5

Вы можете сделать это с помощью стандартного Java:

JarFile jarFile = new JarFile("myjar.jar"); 
Manifest manifest = jarFile.getManifest(); 
Attributes mainAttributes = manifest.getMainAttributes(); 
String bundleVersion = (String) mainAttributes.get(Constants.BUNDLE_VERSION); 

Константы класса происходит от org.osgi.framework пакета.

+0

Есть ли другой способ? –

+1

Каким другим способом вы думаете? Нет стандартной библиотеки, которая анализирует JAR-файл. Вы можете напрямую вызвать функции Felix или Equinox, но я думаю, что они находятся во внутренних пакетах, поэтому вы не можете быть уверены, что одни и те же функции будут существовать в новой версии. Вы также можете запустить встроенный контейнер OSGi, развернуть там файл jar и использовать контейнер для анализа JAR, но я думаю, что это было бы безумным :). Существует библиотека, называемая org.apache.felix.utils, для выражения выражения where [] (например, значение заголовка Import-Package или Bundle-SymbolicName). –

0

Если вы просто хотите получить версию, она может быть полностью переполнена, но в целом действительно хороший способ прочитать все виды данных пакета - использовать bnd. Многие инструменты построены поверх bnd, но их легко использовать в качестве библиотеки.

Смежные вопросы