Простой эксперимент -
пакет A нуждается в том, чтобы некоторые классы com.sun.xml.internal.bind были доступны ему через загрузчик классов ( jaxb .. )
Я погуглил свой путь к теоретическому решению заставить system.bundle экспортировать com.sun.xml.internal.bind, добавив пакет в «org.osgi.framework.system.packages.extra» (стандартный параметр фреймворка, реализованный в felix , задокументировано по адресу http://felix.apache.org/site/apache-felix-framework-configuration-properties.html ) и импортировать его в свой пакет.
Таким образом, пакет больше не будет разрешаться.
Unable to resolve 5.0: missing requirement [5.0] osgi.wiring.package; (osgi.wiring.package=com.sun.xml.internal.bind)
( 5 - пакет с использованием jaxb ) Установка «org.osgi.framework.bootdelegation» для «com.sun.xml.internal.bind» и отказ от импорта его в зависимый пакет работали, как задокументировано.
Я неправильно понимаю, что должен делать system.packages.extra? Могу ли я просто не разрешать импорт из system.bundle? Я попытался явно установить system.bundle в импорте через bnd в нижней части моей директивы Import-Package.
com.sun.xml.internal.bind;bundle-symbolic-name="system.bundle",\
*
Что привело к
Unable to resolve 5.0: missing requirement [5.0] osgi.wiring.package; (&(osgi.wiring.package=com.sun.xml.internal.bind)(bundle-symbolic-name=system.bundle))
PS: я использую bnd и -runproperties для их определения. В моем файле bndrun есть:
-runproperties: osgi.console.enable.builtin=true,\
com.mycompany.manager.confDir=./etc,\
org.osgi.framework.system.packages.extra=com.sun.xml.internal.bind,\
org.osgi.service.http.port=8888
пакет, который нуждается в jaxb, определяет следующий импорт
Import-Package: com.sun.xml.internal.bind,\
*
При попытке разрешить зависимости в редакторе bndrun я получаю
Unable to resolve <<INITIAL>> ver=null: missing requirement (osgi.identity=com.mycompany.configuration.jaxb) [caused by: Unable to resolve com.mycompany.configuration.jaxb ver=0.0.0: missing requirement (osgi.wiring.package=com.sun.xml.internal.bind)]
org.osgi.service.resolver.ResolutionException: Unable to resolve <<INITIAL>> ver=null: missing requirement (osgi.identity=com.mycompany.configuration.jaxb) [caused by: Unable to resolve com.mycompany.configuration.jaxb ver=0.0.0: missing requirement (osgi.wiring.package=com.sun.xml.internal.bind)]
at org.apache.felix.resolver.Candidates.populateResource(Candidates.java:285)
at org.apache.felix.resolver.Candidates.populate(Candidates.java:153)
at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:148)
at biz.aQute.resolve.ResolveProcess.resolveRequired(ResolveProcess.java:34)
at org.bndtools.core.resolve.ResolveOperation.run(ResolveOperation.java:61)
at org.bndtools.core.resolve.ResolveJob.run(ResolveJob.java:43)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
org.osgi.framework.system.packages.extra=sun.awt,sun.misc,com.sun
работает - person Basil   schedule 06.12.2013bundle-symbolic-name="system.bundle"
из импорта в вашем комплекте. - person Neil Bartlett   schedule 07.12.2013