3

免責事項:次のいずれにも当てはまりません:(1)Javaは私の得意分野であり、(2)私はプラグイン開発のプロです。)

私のEclipseプラグインプロジェクトには5つのプラグインが含まれています。それらのうちの2つはうまくコンパイルされます。org.eclipse.swt.widgetsまたはorg.eclipse.swt.graphicsパッケージのクラスへの依存関係を含まない3 。(非常に迷惑な)コンパイル時のエラーメッセージは次のとおりです。

The type org.eclipse.swt.widgets.Control cannot be resolved. 
It is indirectly referenced from required .class files.

今、私は歯の細かい櫛でこのワークスペースを越えてきました。私は以下をチェックして再チェックしました:

  • クラスパス。小切手!(適切なJREおよびJDKはWindows PATHにあります。)
  • 依存関係。小切手!(すべてのライブラリが含まれています。)
  • ビルドパス。小切手!(適切なJREを使用し、必要なすべてのライブラリをインポートすると、ビルドの順序が正しくなります。)
  • 輸入。小切手!(はい。ダイアログに表示されているように、正しいライブラリがインポートされます。)
  • Manifest.MF。小切手!(マニフェストファイルを再確認して、パスが正しいことを確認しました。3つのプロジェクトすべてが、同じJREから同じファイルを参照しています。)
  • Plugin.XML。小切手!(ええ、ファイルは大丈夫です。)
  • .ClassPathファイル。小切手!(ここでも問題ありません。クラスパスファイルはすべて問題ありません。)
  • build.propertiesファイル。小切手!(ここでも驚きはありません。)

目が出血するまでグーグルでスタックオーバーフローしました。典型的な提案はどれも役に立たないようです。

しかし、私は通常の真実がここに当てはまることが証明されるだろうと確信しています。(すべてが同じであれば、答えは通常、単純で、愚かで、痛々しいほど明白なものです。

誰かが私がまだ見ていないことを親切に提案できますか?私はあなたが必要とするかもしれないどんな情報でも喜んで提供します。

PSそして、プラグインの依存関係を構成するために探す場所が多すぎることに気付くかもしれませんか?グーグリーグーグリー。

4

3 に答える 3

7

ターゲット プラットフォームと環境で使用可能な swt プラグインの間に切断があります。

  • Eclipse で、[ヘルプ] -> [設定] -> [ターゲット プラットフォーム] に移動します。
  • ターゲット プラットフォームを選択し、[編集...] をクリックします。
  • ダイアログで、[環境] タブを選択します。

「ターゲット環境」のフィールドは、swt プラグインをロードするために使用されます。入力されていない任意のフィールドは、現在の環境で検出された値にデフォルト設定されます。

あなたの場合、win32.x86 swt jar があります。64 ビットの Windows で実行していて、[アーキテクチャ] フィールドが空白の場合、32 ビットの swt jar はロードされません。不一致を修正するには、次の 2 つのオプションがあります。

  1. Eclipse プラットフォーム パックをインストールします。これには、すべてのプラットフォーム用のすべての swt jar が含まれます。
  2. 「ターゲット環境」フィールドを、利用可能なswt jarと一致させます。
于 2013-04-25T20:20:10.370 に答える
1

これは基本的に、それが間接的な満たされていない依存関係であることを意味します。使用しているライブラリのクラスは、クラスパスに他のクラスが必要です:)

依存関係をどのように管理するか (maven または手動) はわかりませんが、開始点として、jarfinder.com を使用して必要なライブラリを見つけてダウンロードできます (まだ持っていない場合): http://www.jarfinder. com/index.php/java/info/org.eclipse.swt.widgets.Control

Maven を使用している場合は、依存関係を含むすべての必要なライブラリをダウンロードしようとするため、ログを確認する必要があります。したがって、何か問題が発生した場合は、接続の問題または他の理由でアーティファクトをダウンロードできないことをログで指摘する必要があります。

于 2012-06-18T21:22:53.790 に答える