我正在使用Eclipse和Equinox编写两个OSGi捆绑包。
我的第一个捆绑包 A 在项目:捆绑包 A 中。我的第二个捆绑包 B 在捆绑包 B 中。
捆绑包 B 加载一个文件服务器.cfg,该文件位于其项目根目录(IE:workspace/Bundle B/server.cfg)。
当我执行OSGi框架时,它正在从工作区/目录执行,捆绑包B找不到服务器.cfg,因此抛出错误。它正在工作区/服务器中查找.cfg而不是工作区/捆绑包 B/服务器.cfg。
我可以将工作目录更改为捆绑包 B,这将找到服务器.cfg文件。但是,捆绑包 B 随后找不到捆绑包 A 的任何类,因此会引发错误。
我不太确定如何通知包 B 文件的位置,同时仍然能够从 B 访问包 A 的类。
我正在使用Eclipse 3.6.2。
更新:
我已通过执行以下操作解决了此问题:将工作目录设置为包 B,然后在清单文件中导出/导入包 A。这似乎奏效了。
您不必设置工作目录。 尝试:
URL url = bundleB.getEntry("server.cfg");
File file = new File(FileLocator.toFileURL(url).getFile());
还要确保在 build.properties(清单编辑器的"生成"选项卡)中导出服务器.cfg文件。