cha*_*nan 2 java jboss struts exception nosuchmethoderror
这是我得到的错误:
java.lang.NoSuchMethodError: com.Order.getList(Lepo/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/ArrayList;
Run Code Online (Sandbox Code Playgroud)
在反编译类之后,我发现应该有一个"Ljava/lang/String"作为第一个参数.正如你可以看到缺少参数的错误.所以我反编译了调用方法的类,它有一个字符串作为第一个参数.
这是我对这里发生的事情感到困惑的地方.根据时间戳,最后一次修改此代码是2007年.这个错误出现在大约一周前.
这是在JBoss 4.0.0DR3上运行的struts应用程序.据我所知,服务器上没有软件升级.
我也尝试停止JBoss,删除所有临时目录并重新启动.
有没有人对下一步采取任何建议?
编辑:
这里有更多的堆栈跟踪
java.lang.NoSuchMethodError: com.Order.getList(Lepo/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/ArrayList;
at com.ViewStatusAction.retrieveList(ViewStatusAction.java:325)
at com.ViewStatusAction.executeAction(ViewStatusAction.java:115)
at com.BaseAction.execute(BaseAction.java:42)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
Run Code Online (Sandbox Code Playgroud)
我假设,无论是com.Order和com.ViewStatusAction是应用程序代码,而不是第三方的代码.
该异常意味着您的某种版本不匹配.
该ViewStatusAction班预计那里是一个方法Order与此签名:
java.util.ArrayList getList(Lepo.User arg0,
String arg1, String arg2,
String arg3, String arg4)
Run Code Online (Sandbox Code Playgroud)本Order类不声明与签名的方法.(它可能有不同的签名,或者根本不存在.)
最初编译时ViewStatusAction,编译器能够找到该方法.但是现在,运行时系统无法再找到它.这只能意味着您使用的是与Order您的ViewStatusAction类编译的版本不同的版本.
你需要找出你现在为什么会出现这种不匹配的原因.可能的解释包括:
您已经部署了其中一个类的新版本,而没有部署另一个版本的新版本.
您已经部署了其中一个类的过时版本.
在类路径上有两个版本的一个或另一个类,并且您无意中更改了类路径搜索顺序.
你需要做的是找出不兼容类的来源,以及它们是如何实现的.一旦你弄明白了,修复可能是不言而喻的.
我注意到你的FQ类名称不符合公认的标准:
(你的问题可能是修复伪Lepo.User名的后果......)