OSGI Felix不导出src / main / resource文件

时间:2014-03-10 14:43:23

标签: osgi apache-felix osgi-bundle fuseesb

我们知道通过defaul osgi export-package只能从src / main / java文件夹中导出包, 但我还需要将其他文件格式src / main / resource导出以供其他项目使用。 以下是我的

示例

ProjectA(包装类型为jar)

src/main/java
                x.y.z.SomeClass.java
src/main/resource 
                x.y.z.config.SomeConfigFile.xml


pom.xml contains 
    <Export-Package>
        x.y.z.*,
        x.y.z.config.*,
        *
    </Export-Package>

ProjectB(包装类型为捆绑)

src/main/java
                a.b.c.AnotherClass.java
src/main/resource 
                a.b.c.config.AnotherConfigFile.xml


pom.xml contains 
    <Import-Package>
        x.y.z.*,
        x.y.z.config.*,
        *
    </Import-Package>

这里我的要求是使用ProjectA的SomeConfigFile.xml到AnotherConfigFile.xml中 projectB但我总是得到上面场景的FileNotFoundException。 请帮我把src / main / resource类路径文件用到另一个osgi项目中。 我如何能够实现上述定义的场景。

2 个答案:

答案 0 :(得分:1)

您应该使用Include-Resource而不是Import-Package。有关标题的更多信息(位于“标题”部分):http://www.aqute.biz/Bnd/Format

答案 1 :(得分:1)

可能有几个问题(我猜这是选项1,但其他问题也可能有用)

  1. 如果没有java类用法,则必须在Import-Package部分准确指定所需的包。你不能使用星号。
  2. 如果要导出META-INF下的包,则必须在“导出 - 包”部分中使用引号和相等字符对其进行定义。例如:'= META-INF.subdir'
  3. 如果要访问导入包中的资源,则不能使用bundle.getResource()函数,因为它仅在当前包中搜索。您必须使用bundle的classLoader或BundleWiring的listResources函数。