Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSGi中如何处理Java支持的目录机制?_Java_Osgi_Classpath - Fatal编程技术网

OSGi中如何处理Java支持的目录机制?

OSGi中如何处理Java支持的目录机制?,java,osgi,classpath,Java,Osgi,Classpath,我想了解OSGi如何处理Java支持的目录机制?我正在从一个非osgi项目构建一个捆绑包,该项目使用以下认可的JAR: 解析器.jar xml-api.jar xercesImpl.jar 我已经在我的包中嵌入了这些罐子,但我如何告诉OSGi区别对待(认可)它们?您不能将这些罐子嵌入包中;如果您这样做,那么JVM将不再认为它们已被认可 JRE的认可目录中的库由Java扩展类加载器加载,Java扩展类加载器是主应用程序类加载器的父类,但却是引导类加载器的子类。因此,向捆绑包公开这些库的方法是从

我想了解OSGi如何处理Java支持的目录机制?我正在从一个非osgi项目构建一个捆绑包,该项目使用以下认可的JAR:

  • 解析器.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作为其父级。