1

次のように、元の署名を持つJavaメソッドがあります。

public boolean sampleMethod(int num)

これは、私のプロジェクトの多くのjspで呼び出されています。最近、メソッドのシグネチャを次のように変更する必要がありました。

public boolean sampleMethod(long num)

この新しいシグニチャを使用すると、jspのすべてのメソッド呼び出しでjava.lang.NoSuchMethodErrorが発生します。私がすでにコードをコンパイルしたとしても、彼らはまだ古いメソッドを呼び出しているようです。IntellijIDEA11.0を使用しています。

あなたの助けは大歓迎です。

ありがとう!

4

4 に答える 4

4

古いwarファイルがまだデプロイされているようです。以下をせよ:

  1. アプリ/ウェブサーバーを停止します。
  2. web-appsディレクトリからアプリを削除します。
  3. アプリ/ウェブサーバーを起動します。
  4. 新しい戦争を展開する
于 2012-07-31T11:44:07.870 に答える
1

メソッドをオーバーロードするか、JSP側を変更して、新しいメソッドを明示的に呼び出します。オーバーロードされたメソッドは次のようになります。

public boolean sampleMethod(int num){
    return sampleMethod((long) num);
}

public boolean sampleMethod(long num){
    // do your work
}
于 2012-07-31T11:47:36.457 に答える
0

EclipseIDEでも同じ問題が発生しました。

Reimeusが言ったように、EARファイルを削除する必要があります。私の場合、Eclipse IDEはそれをTomcatフォルダーではなく、/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/フォルダーに保存します。

サーバーのタブからもクリーンな場合があります。プロジェクトを右クリックして、[モジュール作業ディレクトリのクリーンアップ...]を選択します。

于 2014-07-17T11:02:35.103 に答える
0

サーブレットコンテナの作業キャッシュを削除し、サーバーにすべてのjspが修正するものを再比較させます。

/ tomcat / work / Catalina /Tomcatのホスト名

于 2019-04-24T04:16:25.697 に答える