OSGi / Equinox Bundle无法找到文件

时间:2013-01-24 18:48:47

标签: eclipse osgi equinox

我正在使用Eclipse和Equinox编写两个OSGi包。

我的第一个捆绑包Bundle A位于Project:Bundle A.我的第二个Bundle B,位于Bundle B.

Bundle B加载文件server.cfg,该文件位于其项目根目录(IE:workspace / Bundle B / server.cfg)中。

当我执行OSGi框架时,它正在从workspace /目录执行,而Bundle B找不到server.cfg,因此抛出错误。它正在查看workspace / server.cfg而不是workspace / Bundle B / server.cfg。

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

我不确定如何通知Bundle B文件的位置,同时仍能从B访问Bundle A的类。

我正在使用Eclipse 3.6.2。


更新:
我通过执行以下操作解决了这个问题: 将工作目录设置为Bundle B,然后在清单文件中导出/导入Bundle A.这似乎有效。

1 个答案:

答案 0 :(得分:2)

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

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

还要确保在build.properties(Manifest Editor的Build选项卡)中导出server.cfg文件。