Хорошие новости для начала:
Unresolved requirement: Import-Package: org.apache.commons.codec.language; version="[1.9.0,2.0.0)"
Это указывает на то, что ваш OSGi-пакет имеет импорт для org.apache.commons.codec.language
, и тот факт, что он имеет диапазон версий (от 1,9 до 2,0, но не включая 2,0), является хорошим признаком того, что путь сборки не перепутан полностью.
Глядя на ваше примерное рабочее пространство, я вижу, что у вас есть проект, который вы используете, чтобы обернуть библиотеку кодеков Apache Commons. Я несколько озадачен тем, почему вы делаете это, так как кодек Apache Commons уже изначально доступен в виде OSGi-пакета. Если вы хотите зависеть от этого в своем рабочем пространстве, вы можете просто добавить его в один из существующих репозиториев. Например, в /cnf/central.maven
вы можете добавить:
commons-codec:commons-codec:1.9
Который будет ссылаться на официальный релиз Maven Central. Затем вы можете ссылаться на этот комплект в пути сборки вашего bnd-файла, используя:
-buildpath: org.apache.commons.codec
Чтобы запустить ваше приложение, вы действительно должны создать файл bndrun
, который вы можете использовать для объявления своих требований (в данном случае это требование вашего тестового проекта), а затем использовать операцию Resolve
(либо кнопка в Bndtools, либо Задача Gradle). Это займет ваш список -runrequirements
и создаст список -runbundles
. В конечном итоге это будет выглядеть примерно так:
-runrequirements: osgi.identity;filter:='(osgi.identity=test)'
-runfw: org.eclipse.osgi;version='[3.13.100.v20180827-1536,3.13.100.v20180827-1536]'
-runbundles: test;version="[0.0.0,0.0.1)",\
org.apache.commons.codec;version="[1.9.0,1.9.1)"
Затем вы можете запустить его непосредственно из этого файла bndrun. Он запустит фреймворк и развернет все пакеты запуска для вас. Если вы используете Bndtools, то он будет даже поддерживать синхронизированные развернутые пакеты с вашей рабочей областью Eclipse, так что вы всегда будете использовать самый последний развернутый код.
Более подробную информацию о том, как это делать , можно найти в документации Bndtools или связанных с ней деталях в OSGi enRoute