我正在使用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.这似乎有效。
答案 0 :(得分:2)
您不必设置工作目录。尝试:
URL url = bundleB.getEntry("server.cfg");
File file = new File(FileLocator.toFileURL(url).getFile());
还要确保在build.properties(Manifest Editor的Build选项卡)中导出server.cfg文件。