3

jdt.ui.JavaUI クラスを必要とするプラグインを作成しています。jdt.ui プラグインを依存関係に含めました。これは私の Manifest.MF です:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: PanelGenerator Plug-in
Bundle-SymbolicName: PanelGeneratorPlugin; singleton:=true
Bundle-Version: 0.1.0
Bundle-Activator: panelgenerator.plugin.Activator
Require-Bundle: org.eclipse.jdt.core,
 org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.core.resources,
 org.eclipse.ui.ide,
 org.eclipse.jdt.ui
Eclipse-LazyStart: true

これは私のbuild.propertiesです:

source.. = src/
output.. = bin/
bin.includes = plugin.xml,\
           META-INF/,\
           .,\
           icons/,\
           templates/

コンパイル時に、コンパイル エラーは発生しません。Eclipse (Debug as -> Eclipse Application) を使用してプラグインをデバッグすると、問題なく動作します。

ただし、それをエクスポートしてから、Eclipse プラグイン フォルダーにコピーしてインストールすると、プラグインが機能しません。JavaUI クラスが使用されるとすぐに、何も起こりません。エラー ログには次のように報告されます。

java.lang.NoClassDefFoundError: org/eclipse/jdt/ui/JavaUI

なぜこれが起こっているのかについてのアイデアはありますか?

4

4 に答える 4

2

「Require-Bundle」内のプラグインの順序は重要です。最も基本的なものが最初に来るように順序付けする必要があります。

私は提案します:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: PanelGenerator Plug-in
Bundle-SymbolicName: PanelGeneratorPlugin; singleton:=true
Bundle-Version: 0.1.0
Bundle-Activator: panelgenerator.plugin.Activator
Require-Bundle:  org.eclipse.core.runtime,
 org.eclipse.core.resources,
 org.eclipse.jdt.core,
 org.eclipse.ui,
 org.eclipse.ui.ide,
 org.eclipse.jdt.ui
Eclipse-LazyStart: true

これは、Eclipse が指定した順序でバンドルからクラスをロードするためです。「基本」→「非基本」の順序でないと、トラブルの原因となります。これを試してください、役立つかもしれません。

于 2009-11-14T17:15:36.623 に答える
0

私が考えることができる唯一のことは、おそらく実行しているバージョンとは異なるバージョンに対してコンパイルしており、バイナリ互換性のない変更があるということです。これが発生したEclipse バグ 177476で同様のことがわかります。

于 2009-10-02T20:03:24.093 に答える
0

これを試しているEclipseのバージョンはどれですか?3.4 (Ganymede) または 3.5 (Galileo) を使用している場合、プラグイン フォルダーに新しいプラグインを追加することはできなくなりました。代わりに、プラグインを dropins フォルダーに入れてみてください (それが dropins フォルダーの意図です)。

プラグインをより恒久的にデプロイする準備ができたら、P2 メタデータを使用してプラグインをエクスポートし、更新マネージャーを使用してプラグインを起動できます。

古いバージョンの Eclipse を使用している場合、おそらく .log ファイルからプラグインに関する詳細が得られます。

于 2009-12-19T00:55:39.977 に答える
0

はい、プラグインを jar にエクスポートし、それを eclipse インストールのpluginsフォルダーにコピーすると、一部の依存関係 (org.eclipse.jdt.ui を含む) が機能しなくなります。実際、プラグインをこのように配布した場合、org.eclipse.core 内のパッケージのみが適切に動作すると思います。

プラグインを実際にインストールするには、次のいずれかを行う必要があります。

  1. エクスポートされた jar をdropins (プラグインではなく) フォルダーにコピーします。次にEclipseを起動したときにプラグインがインストールされます。
  2. 実行中のホストへのエクスポートとインストール
  3. 機能プロジェクト、更新サイトを作成し、Install New Software オプション メニューからプラグインをインストールします。
于 2013-11-04T11:48:25.597 に答える