0

バンドル ベースのプロジェクトを実行しています (eclipse rcp で)。特定のバンドルでは、jar ベースのライブラリ コードのため、フォルダーへのアクセスが必要です。したがって、実際には、私の要件は、プロジェクトに構成ファイルを含む特定のフォルダーを用意することです。プロジェクトを通常の Java アプリケーションとしてテストすると、すべてがスムーズに実行されますが、osgi 内で実行しようとすると、フォルダーが見つからないため失敗します。フォルダーをランタイム環境に追加するにはどうすればよいですか? バンドルの Runtime-Classpath 構成に追加しようとしましたが、これで問題が解決しません。

私のバンドル マニフェスト。config/ フォルダーを追加しようとしています。

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: net.beaconcontroller.datastore
Bundle-SymbolicName: net.beaconcontroller.datastore
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: net.beaconcontroller.datastore
Bundle-ClassPath: .,
 lib/bft-smart-hashserver.jar,
 config/
4

1 に答える 1

0

マニフェスト エディターを開き、ビルドを選択し、バイナリ ビルド ビューでフォルダーを確認して、プラグインをエクスポートするときにフォルダーが含まれるようにします。

次に、通常の Java アプリケーションとは異なる方法で行う必要がある、バンドル/プラグイン リソースを正しくロードしようとしていない可能性があります。これがコード例です。試してみて、うまくいくかどうか教えてください。

public static String loadResourceAsString(String pluginId,
        String resourcePath) throws IOException {
    Bundle bundle = Platform.getBundle(pluginId);
    URL url = bundle.getResource(resourcePath);
    BufferedReader in = new BufferedReader(new InputStreamReader(
            url.openStream()));
    StringBuilder builder = new StringBuilder();
    String inputLine;
    while ((inputLine = in.readLine()) != null) {
        builder.append(inputLine + System.getProperty("line.separator"));
    }
    in.close();
    return builder.toString();
}
于 2012-12-21T21:45:10.273 に答える