【发布时间】:2012-09-05 10:29:14
【问题描述】:
我在一个普通的 Java 应用程序中使用了两个 OSGi 框架。两个框架都从一个共享目录加载包。
在一个包中,我从资源中加载一个文件。我尝试了不同的方式,例如
this.getClass().getClassLoader().getResourceAsStream(...)
FrameworkUtil.getBundle(XXX.class).getEntry(...)
FrameworkUtil.getBundle(XXX.class).getResource(...)
但不管我使用哪个命令,一开始都可以正常工作。但是,在两个框架中的几个安装和卸载步骤之后。返回的 InputStream 为 null。
如果只使用一个 OSGi 框架,我也可以正常工作。
调试了一下,发现Bundle a得到了
FrameworkUtil.getBundle(XXX.class)
指向正确的 jar 文件,但是当我在 Bundle 的 BundleData 中查找引用的包文件时,它引用了另一个包的包文件。捆绑文件是 OSGi 框架(在我的例子中是 Equinox)的临时文件,例如可以在本地 Maven 存储库中找到:
.m2\repository\org\eclipse\osgi\org.eclipse.osgi\3.6.0.v20100517\configuration\org.eclipse.osgi\bundles\29\1
有人知道这里出了什么问题吗?
【问题讨论】:
标签: java osgi equinox apache-felix