1

我有一个带有原始签名的java方法,如下所示:

public boolean sampleMethod(int num)

这在我的项目中的很多 jsp 中都被调用。最近,我需要将方法签名更改为:

public boolean sampleMethod(long num)

有了这个新签名,我的 jsp 中的所有方法调用现在都会给我一个 java.lang.NoSuchMethodError。即使我已经编译了代码,他们似乎仍在调用旧方法。我正在使用 Intellij IDEA 11.0。

非常感谢您的帮助。

谢谢!

4

4 回答 4

4

看起来您仍然war部署了旧文件。请执行下列操作:

  1. 停止应用程序/Web 服务器。
  2. 从 web-apps 目录中删除应用程序。
  3. 启动应用程序/Web 服务器。
  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

我在 Eclipse IDE 中遇到了同样的问题。

正如 Reimeus 所说,您需要删除 EAR 文件。就我而言,Eclipse IDE 不会将其存储在 Tomcat 文件夹中,而是存储在/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/文件夹中。

它也可以从 Server 的选项卡中清除,右键单击您的项目并选择“Clean Module Work Directory...”。

于 2014-07-17T11:02:35.103 回答
0

只需删除 Servlet 容器中的工作缓存,然后让服务器重新编译所有 jsp 即可修复。

/tomcat/work/Catalina/Tomcat 的主机名

于 2019-04-24T04:16:25.697 回答