我有一个带有原始签名的java方法,如下所示:
public boolean sampleMethod(int num)
在我的项目中,很多jsp都会调用它。最近,我需要将方法签名更改为:
public boolean sampleMethod(long num)
使用这个新签名,我的jsp中的所有方法调用现在都给了我一个java.lang.NoSuchMethodError。即使我已经编译了代码,它们似乎仍在调用旧方法。我正在使用Intellij IDEA 11.0。
非常感谢您的帮助。
谢谢!
答案 0 :(得分:4)
看起来您仍然部署了旧的war
文件。执行以下操作:
答案 1 :(得分:1)
重载方法或更改JSP端以显式调用新方法。重载的方法就像;
public boolean sampleMethod(int num){
return sampleMethod((long) num);
}
public boolean sampleMethod(long num){
// do your work
}
答案 2 :(得分:0)
我在Eclipse IDE中遇到了同样的问题。
正如Reimeus所说,您需要删除EAR文件。
在我的例子中,Eclipse IDE不会将它存储在Tomcat文件夹中,而是存储在/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/
文件夹中。
也可以从服务器选项卡中清除,右键单击您的项目并选择"清洁模块工作目录..."。
答案 3 :(得分:0)
只需删除Servlet容器中的工作缓存,然后让服务器重新编译所有可修复的jsp。
/ tomcat / work / Catalina / Tomcat的主机名