2013-01-24 87 views
2

我正在使用Eclipse和Equinox编写两个OSGi软件包。OSGi/Equinox软件包找不到文件

我的第一个捆绑,捆绑,是项目:包A.我的第二个包B,是捆B

捆B加载文件SERVER.CFG,它位于它的项目的根目录( IE:workspace/Bundle B/server.cfg)。

当我执行OSGi框架时,它从工作区/目录执行,并且Bundle B找不到server.cfg,从而引发错误。它正在workspace/server.cfg中查找,而不是工作空间/ Bundle B/server.cfg。

我可以将工作目录更改为Bundle B,它将查找server.cfg文件。然而,Bundle B无法找到Bundle A的任何类,因此抛出一个错误。

我真的不知道我该怎么通知文件的位置的包B,同时仍然能够从B.

访问捆绑的班,我使用Eclipse 3.6.2。


更新: 设置工作目录捆绑B,然后导出/在manifest文件中导入捆绑:
我已经通过执行以下操作来解决这个问题。这似乎工作。

+0

你是什么意思当您更改工作目录时,Bundle B无法找到Bundle A的类?你为什么要从工作目录中加载类?这听起来不像我OSGi。 –

回答

2

您不应该设置工作目录。尝试:

URL url = bundleB.getEntry("server.cfg"); 
File file = new File(FileLocator.toFileURL(url).getFile()); 

另外,还要确保你的server.cfg文件在你的build.properties(构建清单编辑器的选项卡)出口。

相关问题