この問題を調査しているときに、この投稿のタイトルに似たエラーが発生した投稿を多数見つけました。この問題は、開発中のプラグイン クラスの関数にStringを渡そうとしたときにのみエラーが表示されるという点で異なります。
RAPの投稿を 1 つ見つけました: How to access Object in ViewPartは、私の問題を示唆している可能性があります。
私は Eclipse 3.6.1 を実行していますが、この質問は一般的な Java に関するものだと思います。私の主な問題は、Eclipse プラグイン プロジェクトで別のクラス (クラス B) を使用する 1 つの Eclipse プロジェクトにクラス (クラス A) があることです。Aは、引数の 1 つとして文字列を必要とするクラス B の関数を呼び出すことはできません。クラス B を使用するダミーのクラス C を (ダミーの Java プロジェクトと共に) 生成しましたが、それでも同じ問題が発生します。いくつか詳しく説明しましょう。
Eclipse に 2 つのプロジェクトがあります。それらの 1 つは、本質的にプロッターであり、 org.eclipse.ui.part.ViewPartを拡張するクラスを含む Eclipse プラグイン プロジェクトです。引数の 1 つとして文字列を期待するプロッター クラスからメンバー関数を呼び出すことができない別の非プラグイン プロジェクトからこのプロッター クラスをインスタンス化しています。
たとえば、次のコード スニペット:
Plotter myPlotter = new Plotter();
myPlotter.plot();
非プラグイン プロジェクトから実行すると正しく動作します。ただし、文字列を期待するようにプロットを変更した場合(たとえば、ラベルの場合)、または文字列を出力する新しい関数を作成した場合:
Plotter myPlotter = new Plotter();
String theString = "I'm the String";
myPlotter.plot(theString);
myPlotter.printMe(theString);
Eclipse では、 printMeとプロットの下にエラーを示す赤い下線が表示されます。printMeにカーソルを合わせると、次のエラーが表示されます: タイプ org.eclipse.ui.part.ViewPart を解決できません。必要な .class ファイルから間接的に参照されている
この問題をもう少しよく理解するために、プラグイン プロジェクトに別の 2 つのクラスを作成して問題をテストしました。1 つはスーパークラスがjava.lang.Objectで、もう 1 つはスーパークラスがorg.eclipse.ui.part.ViewPartです。ObjectベースのクラスからString引数を使用して関数を呼び出すことはできますが、 ViewPartベースのクラスから String を引数として関数を呼び出すことはできません。したがって、それは ViewPart と関係があります(クラスがEventManagerから継承されている場合、後続のスーパークラスにドリルダウンできますが、まだ問題があります)。念のため、Vectorを拡張するようにクラスを変更してみましたそして私の問題は消えます。問題がEventManagerおよび/またはViewPartに関連しているように見えます。
どんな洞察も大歓迎です。