Java 8 如何为J2SE 1.8概要文件的OSGi系统类路径上的包提供附加类

Java 8 如何为J2SE 1.8概要文件的OSGi系统类路径上的包提供附加类,java-8,osgi,bnd,bndtools,bootclasspath,Java 8,Osgi,Bnd,Bndtools,Bootclasspath,在ee.j2se-1.8中包含包org.w3c.dom org.osgi.framework.system.packages = \ ... org.w3c.dom,\ ... org.osgi.framework.bootdelegation = \ ... org.w3c.*,\ org.xml.*,\ .... 捆绑包xml-API_1.4.1.20140905-131237.jar包含相同的包org.w3c.dom,但还有一个重要的类。。。ElementTraversal.clas

在ee.j2se-1.8中包含包org.w3c.dom

org.osgi.framework.system.packages = \
...
 org.w3c.dom,\
...

org.osgi.framework.bootdelegation = \
...
org.w3c.*,\
org.xml.*,\
....
捆绑包xml-API_1.4.1.20140905-131237.jar包含相同的包org.w3c.dom,但还有一个重要的类。。。ElementTraversal.class更多

所以我的问题是


如何在Equinox OSGi运行时中提供缺少的类?

人们不认真对待包,这让您感到痛苦。我们在JTAAPI中也有类似的问题。VM交付的版本与作为特殊包交付的版本不同

解决方案是在框架所在的类路径上包含JAR和额外的包。看起来您正在使用bnd(很好!),因此这看起来像:

-runpath: xml-apis__xml-apis;version="[1.4.1,2.0.0)"
如果这是一个具有正确导出的捆绑包,那么您将自动将其导出为系统包。看起来所有的包都已经在VM的标准导出中了。但是,如果您的JAR中有VM未导出的包,则可以按如下方式添加它们:

 -runsystempackages: javax.xml.foo