1

Javaコードだけを含むJavaプロジェクトがあります。Javaプラグインに依存しています。非プラグイン プロジェクトを取り、それを osgi バンドルに変換し、両方を機能に入れたいと考えています。私はこれを行いましたが、クラスが見つかりません。毎回 NoClassDefError を通過するだけですが、すべて問題ないようです。念のため、非常に単純な構成で 2 つ目のプロジェクトを作成しました。

マニフェスト.MF:

 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Test
 Bundle-SymbolicName: test
 Bundle-Version: 1.0.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Export-Package: com.etc, 

jar は正しくビルドされ、実際のプラグインとともにデプロイされますが、そのプラグインが「テスト」に依存するものを呼び出すと、クラスがロードされず、失敗するだけですorg.eclipse.core.runtime.CoreException: Plug-in "something.something.tools" was unable to instantiate class "com.something.something.SomeTool".

生成された jar はまったく問題なく、その下にすべてのクラス ファイルがありcom.something.something、MANIFEST.MF ファイルもそこにあります。

4

1 に答える 1

0

非プラグイン プロジェクトをプラグイン プロジェクトに変換するだけで、はるかに簡単になる可能性があります。パッケージ エクスプローラーでプロジェクトを右クリックしConfigure > Convert to Plug-In Projects...、通常の Eclipse 構造を使用して 2 つのプラグインから機能を作成する を選択します。そうしないと、手作業で多くの構成を行う必要があり、Eclipse のドキュメントは、すべての人がダイアログを使用することを期待しているため、あまり役に立ちません。

このプロジェクトをプラグイン以外のコンテキストでも使用している場合、プラグインへの変換によって問題が発生することはありません。プラグインを使用しないシナリオでは無視される余分なものが jar に含まれているだけです。

于 2013-06-23T17:37:30.653 に答える