0

小さな OSGI プロジェクトで問題が発生しています。バンドルの 1 つで、以前にインストールされていなかった別のバンドルをプログラムでインストールして開始します。

ClassNotFoundExceptionそれにもかかわらず、Eclipse でプロジェクトを実行すると、バンドルの実装にジャンプします。

これは、Eclipse が、各バンドルをビルドする bin フォルダーを指定する dev.properties ファイルを指す -dev パラメーター (開発モード) を使用してプロジェクトを自動的に開始するためだと思います。明らかに、Eclipse によって作成されたこの dev.properties ファイルには、後でインストールするバンドルが含まれていません。

プロジェクトは Eclipse の外部で正常に動作し、jar は正しいですが、Eclipse 内で実行すると ClassNotFoundException がジャンプします。これは、Eclipse を開発モードで開始すると、フレームワークのクラスパスを拡張するために dev.properties ファイルが作成されるために発生します。しかし、その後、新しいバンドルをインストールしたいときに、新しいイベントが発生したときに dev.properties が更新されず、Eclipse でカスタマイズした dev.properties ファイルを使用できないため、フレームワークはその新しいバンドルからクラスをロードできません。 .

カスタマイズされた dev.properties を使用する方法、またはこれを Eclipse で機能させることができるものを変更する方法はありますか?

コードの小さな例を次に示します。

 public void charge(String location){
    try {
        System.out.println("Entró");
        bundle2= bundleContext.installBundle(location);
        System.out.println("Instalado");

        bundle2.start();
        System.out.println("Activado");

    } catch (BundleException e) {
        e.printStackTrace();
    }
}
4

3 に答える 3

2

PDEを使用してEclipse内からEquinoxフレームワークインスタンスを起動すると、「dev」モードを使用してフレームワークのクラスパスが拡張され、プラグインプロジェクト内の「bin」フォルダーからクラスとリソースが読み込まれます。

Eclipse内から実行するときに何かが機能するが、エクスポート/ビルドして外部で実行するときに機能しない場合は、build.propertiesファイルに何かが欠落している(PDEエクスポート機能のいずれかが使用されている場合)か、一部のパッケージインポートが欠落している可能性がありますMANIFEST.MFで。

セットアップの詳細と、Eclipseの外部で実行するビットを生成する方法について教えてください。

于 2012-07-02T12:22:55.397 に答える
0

dev.properties がそのように使用されることを意図しているとは思いませんが、いずれにせよ、OSGi は動的です。バンドルをインストールすると、-dev モードに関係なく動作するはずです。

インストール元のjarまたはフォルダーが間違っている可能性がありますか? インストールするバンドルを Eclipse からエクスポートすることをお勧めします (プロジェクトから -> エクスポート -> デプロイ可能なプラグイン)。

build.properties が正しければ、正しい jar を取得する必要があります。そのjarをインストールしてみてください。

于 2012-07-02T08:33:18.567 に答える
0

Debug Configuration-> OSGi Framework を使用している場合。これらのオプションがチェックされていることを確認してください。

  • Include optional dependencies when computing required bundles
  • Add new workspace bundles to this launch configuration automatically.

このようにして、ワークスペース内で新しいプラグインを追加または作成するたびに、それが実行に追加されます。

于 2012-07-12T21:15:00.977 に答える