OSGi中如何处理Java支持的目录机制?
我想了解OSGi如何处理Java支持的目录机制?我正在从一个非osgi项目构建一个捆绑包,该项目使用以下认可的JAR:OSGi中如何处理Java支持的目录机制?,java,osgi,classpath,Java,Osgi,Classpath,我想了解OSGi如何处理Java支持的目录机制?我正在从一个非osgi项目构建一个捆绑包,该项目使用以下认可的JAR: 解析器.jar xml-api.jar xercesImpl.jar 我已经在我的包中嵌入了这些罐子,但我如何告诉OSGi区别对待(认可)它们?您不能将这些罐子嵌入包中;如果您这样做,那么JVM将不再认为它们已被认可 JRE的认可目录中的库由Java扩展类加载器加载,Java扩展类加载器是主应用程序类加载器的父类,但却是引导类加载器的子类。因此,向捆绑包公开这些库的方法是从
- 解析器.jar
- xml-api.jar
- xercesImpl.jar
我已经在我的包中嵌入了这些罐子,但我如何告诉OSGi区别对待(认可)它们?您不能将这些罐子嵌入包中;如果您这样做,那么JVM将不再认为它们已被认可
JRE的认可目录中的库由Java扩展类加载器加载,Java扩展类加载器是主应用程序类加载器的父类,但却是引导类加载器的子类。因此,向捆绑包公开这些库的方法是从系统捆绑包中导出它们。这可以通过将属性
org.osgi.framework.system.packages.extra
设置为要导出的其他包的列表来实现。osgi对已批准的目录没有任何特殊的作用。然而,OSGi确实需要显式导出和导入所有不以“java.”开头的包。这意味着系统捆绑包可以导出一个包,该包可以是背书的,也可以是捆绑包。因此,导入包的另一个包可以连接到任一导出器(取决于版本控制等约束)
因此,您可以将这些JAR放入您需要确保系统包正在导出这些包的文件中。见和。或者,您可以将这些JAR打包,导出并安装它们。您还需要确保配置框架,以便扩展类装入器是捆绑类装入器的父类。看@bhargrave为什么?我这里不是说家长代表团。系统包的类加载器是应用程序CL,它已经将扩展CL作为其父级。