Я собираю все свои пакеты, используя maven-bundle-plugin
, и после некоторых тестов с pax:provision
я обнаружил, что он создает Import-Package=org.osgi.framework;version="[1.8,0)"
для всех пакетов, и в момент установки пакетов в Felix все мои пакеты не разрешены из-за org.osgi.framework.BundleException: Unresolved constraint in bundle com.domain.mybundle [55]: Unable to resolve 55.0: missing requirement
[55.0] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))
.
Почему maven-bundle-plugin
создает этот заголовок, если у меня нет прямой зависимости от этого пакета. Я также попытался добавить зависимость:
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>4.6.0</version>
</dependency>
И он по-прежнему использует версию 1.8.0
. Есть идеи, почему?
ОБНОВЛЕНИЕ
Проверив еще раз, пакеты действительно используют org.osgi.framework
в активаторе. но этот класс org.osgi.framework.BundleActivator
происходит из пакета:
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
<version>4.3.1</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
Итак, еще раз, почему maven-bundle-plugin
не использует версию 4.3.1
вместо 1.8.0
? А в других бандлах использует версию 1.6.2
.
ОБНОВЛЕНИЕ 20 марта 2015 г.
Это исключение, которое я получаю после выполнения mvn pax:provision
org.osgi.framework.BundleException: Unresolved constraint in bundle org.classdomain.per
sistence [47]: Unable to resolve 47.0: missing requirement[47.0] osgi.wiring.package;
(&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=2.0.0)))ERROR:
Bundle org.classdomain.persistence [47] Error starting file:bundles/org.classdomain.per
sistence_0.1.0.jar (org.osgi.framework.BundleException: Unresolved constraint in bundle
org.classdomain.persistence [47]: Unable to resolve 47.0: missing requirement [47.0] o
sgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(versio
n>=2.0.0))))
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4002)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2045)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299)
at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304)
at java.lang.Thread.run(Thread.java:745)
Определенно похоже, что это исключение происходит только при использовании mvn pax:provision
, если я устанавливаю те же пакеты в отдельном экземпляре Felix, тогда все работает, как и ожидалось.