1

Eclipse Indigo を使用して、OSGi Java Framework を使用していくつかのバンドルを開発しました。他のバンドルに依存し、メイン プログラムを実行するメイン バンドルがあります。Eclipse ですべてのバンドルを実行しようとすると、すべて正常に動作しますが、各バンドルを JAR として保存し、コマンド ラインで OSGi フレームワークNoClassDefFoundErrorを起動すると、メイン バンドルを起動しようとすると例外が発生します。見つからないクラスは依存関係です。バンドルの残りのステータスは ACTIVE になり、メイン バンドルは解決済みになります。

使用しているすべてのライブラリ (mysql コネクタなど) を含むバンドルを作成し、これらのライブラリが必要なすべてのバンドルにこのバンドルをインポートしています。これがそれを達成するための最良の方法であるかどうかはわかりません。また、アプリケーションでスレッドを使用していますが、それらのいくつかは別のバンドルのメソッドを使用しています。それが問題の原因でしょうか?

私に何ができるか考えている人はいますか?Apache Karaf にもバンドルをインストールする必要があり、同じ結果が得られました。各バンドルの開始レベルと関係がありますか?

4

1 に答える 1

1

わかりました、私は問題を見つけました。Eclipse では、パラメーターorg.osgi.framework.bootdelegationがデフォルトで * に設定されていますが、他のすべての OSGi フレームワークでは設定されていません。

現在 Apache Karaf を使用しており、etc/ 内にある config.properties をデフォルト値から変更しました (org.apache.karaf.jaas.boot,sun. ,com.sun. ,javax.transaction,javax. transaction.*) から *. これで機能しますが、このパラメーターを * に設定することはお勧めできないため、ロードする必要がある正確なライブラリを認識しようとしています。

詳細については、http ://wiki.osgi.org/wiki/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F を参照してください。

ありがとう、これが他の人に役立つことを願っています。

于 2012-10-16T17:43:23.010 に答える