我想了解OSGi如何处理Java认可的目录机制?我正在使用以下认可的罐子的非osgi项目构建一个包:
我已将这些罐子嵌入我的包装中,但我如何告诉OSGi以不同方式对待它们(认可)?
答案 0 :(得分:2)
OSGi对于背书目录没有任何特别之处。但是,OSGi确实需要所有不以“java”开头的软件包。要显式导出和导入。这意味着系统包可以导出可以支持的包以及包。因此,导入包的另一个包可以连接到任一个导出器(取决于版本控制等约束)。
因此,您需要确认系统包是否正在导出这些包。请参阅http://www.osgi.org/javadoc/r4v43/core/org/osgi/framework/Constants.html#FRAMEWORK_SYSTEMPACKAGES_EXTRA和http://www.osgi.org/javadoc/r4v43/core/org/osgi/framework/Constants.html#FRAMEWORK_SYSTEMPACKAGES。或者你可以制作这些罐子的捆绑包,然后导出包装并安装它们。
答案 1 :(得分:0)
您无法在捆绑中嵌入这些JAR;如果你这样做,那么它们就不再被JVM认可了。
JRE的背书目录中的库由Java扩展类加载器加载,该类加载器是主应用程序类加载器的父级,但是引导类加载器的子级。因此,将这些库公开给您的bundle的方法是从系统包中导出它们。这可以通过将属性org.osgi.framework.system.packages.extra
设置为要导出的其他包列表来完成。