2

Eclipse と Equinox を使用して 2 つの OSGi バンドルを作成しています。

私の最初のバンドル、バンドル A は、プロジェクト: バンドル A にあります。2 番目のバンドル B は、バンドル B にあります。

バンドル B は、そのプロジェクト ルート ディレクトリにあるファイル server.cfg をロードします (つまり、workspace/Bundle B/server.cfg)。

OSGi フレームワークを実行すると、workspace/ ディレクトリから実行され、バンドル B が server.cfg を見つけることができないため、エラーがスローされます。これは、workspace/Bundle B/server.cfg ではなく、workspace/server.cfg を探しています。

作業ディレクトリをバンドル B に変更すると、server.cfg ファイルが見つかります。ただし、バンドル B はバンドル A のクラスを見つけることができないため、エラーがスローされます。

バンドル B からバンドル A のクラスにアクセスしながら、ファイルの場所をバンドル B に通知する方法がよくわかりません。

私はEclipse 3.6.2を使用しています。


更新:
次の手順を実行して、この問題を解決しました: 作業ディレクトリをバンドル B に設定し、マニフェスト ファイルでバンドル A をエクスポート/インポートします。これはうまくいくように見えました。

4

1 に答える 1

2

作業ディレクトリを設定する必要はありません。試す:

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

また、server.cfg ファイルが build.properties (マニフェスト エディターの [ビルド] タブ) にエクスポートされていることを確認してください。

于 2013-01-25T00:02:13.277 に答える