1

私はRAD7.5で働いています。あるWebプロジェクトから別のWebプロジェクトにパッケージをインポートしています。クラスをインスタンス化してそのメソッドの1つを使用しようとしましたが、メソッドが未定義であるというビルドエラーが発生します。メソッドは公開されています。これを除いて、他のすべての方法が機能します。インポート元のプロジェクトは適切にビルドされています。両方のプロジェクトを削除し、バージョン管理から再度取得して、再構築してみました。いったい何が問題になる可能性がありますか、それともEclipse(RAD 7.5)で他に何をチェックできますか?

追加情報:

呼び出されるメソッドは静的ではありません。これはパブリックであり、静的ではない保護されたメソッドから呼び出されます。

コードスニペット

インポートするクラス:

package com.state;

public TelcoVariableTracker() {
    super();
}

public boolean isMedicalFlag() {
    return isMedicalFlag;
}

ビルドエラーのあるクラス:

import com.state.TelcoVariableTracker;

protected method() {

TelcoVariableTracker phoneInfo = HttpSessionUtils.getTelcoVariableTracker(request);

    if (phoneInfo.isMedicalFlag() {  // Build error: The method isMedicalFlag() is undefined for the type TelcoVariableTracker
        // Do things
    }
}
4

8 に答える 8

1

クラスは同じパッケージで2回宣言できます。したがって、最初のクラスのみがロードされ、2番目のクラスには欠落しているメソッドがあります。

なんてめちゃくちゃ、あなたは自分自身からメソッドを隠します:D

于 2012-07-26T15:02:34.230 に答える
1

クラスパスに重複したクラスがあります。私の場合、Schema.getLogicalType()メソッド未定義エラーが発生しましたが、他のSchemaメソッドは正常に機能しており、Eclipse アシストに表示されました。強調表示getLogicalTypeして F3 を押し、ソースをリンクしました。確かにメソッドは存在しました。を開いたときに修正が見つかりました.classpath。ソースが別の jar ファイルにリンクされていました。リンクされ、その中にphoenix-4.7.0-HBase-1.1-client.jar古いorg.apache.avro.Schemaパッケージがありました。phoenix.jar が私の .jar と競合しましたavro-1.8.1.jar。そのため、問題を解決するためにクラスパスから phoenix.jar を削除しました。これにより、メソッド未定義エラーを修正する方法についてのアイデアが得られることを願っています。

于 2016-09-05T15:43:52.997 に答える
0

私もこの問題を抱えていました。私の場合、実際に関数を作成する前に関数の呼び出しを書いていたので、最初はエラーが予想されていました。ただし、関数が作成された後、エラーは残りました。タブにエラーをキャッシュし、タブを切り替えるときにエラーを再チェックしなかったようです。タブを閉じて再度開くと、修正されました。

于 2016-10-14T11:00:06.863 に答える
0

これと同じ問題がありました。2 つの別々のワークスペースで宣言されていたにもかかわらず、Eclipse は同じ 2 つの jar から同じコードを取得していました。プロジェクト - ワークスペースとプロジェクト - Workspace_new を使用していました。

他のワークスペースを削除してクリーンなプロジェクトを実行しましたが、最初は役に立ちませんでした。同一の瓶があった場所が複数ありました。閉じてEclipseを再起動しても問題が解決しないため、実際にはラップトップをシャットダウンしてすべてをクリアする必要がありました。しかし、それを行った後、すべてが解決し、コンパイルエラーはなくなりました。次に、削除したワークスペースを元に戻すと、Eclipse はクリーンな状態を保つことができました。

于 2014-03-17T16:39:40.057 に答える