小さな 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();
}
}