有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java与OSGI中的类加载混淆

我在一个RCP项目中遇到了问题。 我有一个OSGI jar,比如说jar-A,它从另一个OSGI jar导入一些包,比如说jar-B。现在我又有一个OSGI jar-C,它与jar-A具有相同的包结构,但其中包含不同的类

我有一个插件称为“plugin-a”,它的构建路径中同时包含jar-a和jar-B,并且作为运行时依赖项。现在plugin-A导出jar-A和jar-B的包

我还有一个“plugin-B”,它的构建路径中有“jar-C”,作为运行时依赖项。现在plugin-B将plugin-A作为必需的捆绑包。所以从技术上讲,它应该能够访问“jar-A”和“jar-B”的包,对吗

现在plugin-B有一个类从jar-a和jar-C的类导入包。它可以很好地识别jar-C的类,因为它位于构建路径中,但它不能识别jar-A的类。它说“some X类的类型无法解析。它是从必需的.class文件间接引用的”,其中some X类位于jar-A中。该X类不应该从导出该类的必需bundle plugin-A中识别出来吗? 当我把这个jar-A放在plugin-B的包路径中时,我再也不会遇到这个问题了


共 (1) 个答案

  1. # 1 楼答案

    我不确定我是否了解所有这些,但是只有在插件的MANIFEST.MF文件的Export-Package项中列出的包才可供其他插件使用

    在舱单上。MF编辑器在“导出的包”部分的“运行时”选项卡上指定这些

    我的一个插件中的导出包部分示例:

    Export-Package: greg.music.core.common,
     greg.music.core.databinding,
     greg.music.core.e4util,
     greg.music.core.editor,
     greg.music.core.preferences,
     greg.music.core.progress,
     greg.music.core.services,
     greg.music.core.showin,
     greg.music.core.util,
     greg.music.core.views,
     greg.music.core.xml