java.lang.NoSuchMethodError找不到方法,但是那个方法明明存在

来源:互联网 发布:苹果手机怎样更新淘宝 编辑:程序博客网 时间:2024/06/13 00:06

java.lang.NoSuchMethodError找不到方法,但是那个方法明明存在5

错误信息如下: 
Java代码  收藏代码
  1. ERROR 2012-08-15 11:35:12,734 [com.opensymphony.webwork.dispatcher.ServletDispatcher] - Could not execute action  
  2. java.lang.reflect.InvocationTargetException  
  3.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
  4.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
  5.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
  6.         at java.lang.reflect.Method.invoke(Method.java:592)  
  7.         at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:300)  
  8.         at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)  
  9.         at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)  
  10.         at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)  
  11.         at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)  
  12.         at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)  
  13.         at com.yzwb.cctv.logic.SignonInterceptor.intercept(SignonInterceptor.java:327)  
  14.         at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)  
  15.         at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)  
  16.         at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)  
  17.         at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)  
  18.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)  
  19.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)  
  20.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)  
  21.         at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)  
  22.         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)  
  23.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233)  
  24.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)  
  25.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)  
  26.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)  
  27.         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)  
  28.         at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)  
  29.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)  
  30.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)  
  31.         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:594)  
  32.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)  
  33.         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)  
  34.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)  
  35.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)  
  36.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)  
  37.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)  
  38.         at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:490)  
  39.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)  
  40.         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)  
  41.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)  
  42.         at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)  
  43.         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)  
  44.         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)  
  45.         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)  
  46.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)  
  47.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)  
  48.         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)  
  49.         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)  
  50.         at java.lang.Thread.run(Thread.java:595)  
  51. Caused by: java.lang.NoSuchMethodError: com/yzwb/cctv/domain/CivilContract.getContractAmount()D  
  52.         at com.yzwb.cctv.web.contract.archive.ArchiveContractQueryAction.queryCivilContract(ArchiveContractQueryAction.java:173)  
  53.         at com.yzwb.cctv.web.contract.archive.ArchiveContractQueryAction.doQuery(ArchiveContractQueryAction.java:78)  
  54.         ... 48 more  

我想问一下下面这个Caused by: java.lang.NoSuchMethodError:******D这句话中最后的D是什么意思,以及这个错误为什么会发生。下面贴错误提示中涉及到的代码 
1.JavaBean中的代码,证明那个方法时存在的 
Java代码  收藏代码
  1. private long contractAmount; // 合同金额  
  2. public long getContractAmount() {  
  3.     return contractAmount;  
  4. }  
  5.   
  6. public void setContractAmount(Long contractAmount) {  
  7.     if(contractAmount != null)  
  8.         this.contractAmount = contractAmount;  
  9.     else  
  10.         this.contractAmount = 0;  
  11. }  

2.调用这个方法并报错的那几行代码 
Java代码  收藏代码
  1. double count = 0;  
  2. for(Object o : paginationSupport.getItems()){  
  3.     CivilContract con = (CivilContract)o;  
  4.     if(con.getContractAmount() != 0){//报错的位置在这行  
  5.         count += con.getContractAmount();  
  6.     }  
  7. }  

谢谢各位!
JavaSpringHibernate企业应用 
2012年8月15日 14:01
  • Comment2条评论
  • 关注(0)

4个答案按时间排序按投票排序

00

采纳的答案

有时候出现这种怪异的问题,是由于多个版本的class存在。 
比如说:某个java编译成class后,放到classes下面,然后lib目录下,也有这个class所在的jar包,这样就导致classpath实际上有两个相同的class 

2012年8月15日 14:33
  • Comment1条评论
00

检查下 你的配置这个方法的路径!8成是配错了

2012年8月15日 15:03
  • Comment添加评论
00

是否为未编译成功的缘故?

2012年8月15日 14:12
  • Comment添加评论
01

估计在不同的 jar中存在同样的class 
调用class.getProtectionDomain() 看看class在那个jar中 
删除即可

2012年8月15日 16:51
    0 0