2

そのため、Eclipse で確認できる拡張機能がインストールされています ( http://docs.oracle.com/javase/tutorial/ext/basics/index.htmlを参照)。

このエクステンションでクラスのインスタンスを作成しようとする単純な rcp アプリケーションを作成しました。ただし、すべて正常にコンパイルされますが、インスタンスの作成時に NoClassDefFoundError が発生します。

インスタンスを正常に作成する単純なJavaアプリケーションを実行できるため、これはOSGiと関係があると思います。

任意の提案をいただければ幸いです。

ありがとう

4

2 に答える 2

3

引数を使用して親クラスローダーを「ext」クラスローダーに設定する別の解決策を見つけました

osgi.parentClassloader=ext

このような変更の意味は、私が今エラーを取得していないこと以外はまだわかりません。

于 2012-04-27T11:01:08.543 に答える
2

拡張機能のクラスは JRE によって提供されるため、OSGi フレームワークのシステム バンドルによってエクスポートする必要があります。

これは、パッケージをプロパティに追加することで実現できますorg.osgi.framework.system.packages.extra(これをシステム プロパティとして設定すると、フレームワークに渡されます)。

これが完了し、使用するバンドルの MANIFEST.MF の Import-Package エントリにそれらのパッケージが一覧表示されると、クラスにアクセスできるようになります。

JRE 拡張機能は、OSGi のほぼアンチテーゼです。なぜこれを行っているのか知りたいです。

于 2012-04-26T17:27:51.610 に答える