我正在使用 Eclipse 和 Equinox 编写两个 OSGi 包。
我的第一个捆绑包,捆绑包 A,在项目中:捆绑包 A。我的第二个捆绑包 B,在捆绑包 B 中。
Bundle B 加载一个文件 server.cfg,该文件位于它的项目根目录中(即:workspace/Bundle B/server.cfg)。
当我执行 OSGi 框架时,它是从 workspace/ 目录执行的,并且 Bundle B 找不到 server.cfg,因此会引发错误。它正在查看工作空间/server.cfg 而不是工作空间/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。这似乎奏效了。