哪位兄台帮我看看简单demo报错java.lang.stringNoSuchMethodError

2013年9月 移动平台大版内专家分月排行榜第二
2013年11月 移动开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。2016年1月 Java大版内专家分月排行榜第二2015年12月 Java大版内专家分月排行榜第二2015年8月 Java大版内专家分月排行榜第二2015年3月 Java大版内专家分月排行榜第二2015年1月 Java大版内专家分月排行榜第二2014年12月 Java大版内专家分月排行榜第二2014年11月 Java大版内专家分月排行榜第二2014年6月 Java大版内专家分月排行榜第二2014年4月 Java大版内专家分月排行榜第二2014年1月 Java大版内专家分月排行榜第二2013年11月 Java大版内专家分月排行榜第二
2015年9月 Java大版内专家分月排行榜第三2015年6月 Java大版内专家分月排行榜第三2015年5月 Java大版内专家分月排行榜第三2015年2月 Java大版内专家分月排行榜第三2014年3月 Java大版内专家分月排行榜第三2013年12月 Java大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。  最近接手新项目,项目一跑,NoSuchMethodError蹦出来了,好不容易解决了,换一个电脑,NoSuchMethodError又蹦出来了,干脆,总结下遇到NoSuchMethodError应该如何应对的思路。
  通过下面的通用思路,可以在不必了解业务的情况下,尽可能解决这个报错。
  下面演示下如何在啥都不知道的情况下遇到该错误的解决思路:
  随便找一个错误示例:
Caused by: java.lang.NoSuchMethodError: org.eclipse.piler.&init&(Lorg/eclipse/jdt/internal/compiler/env/INameELorg/eclipse/jdt/internal/compiler/IErrorHandlingPLorg/eclipse/jdt/internal/compiler/impl/CompilerOLorg/eclipse/jdt/internal/compiler/ICompilerRLorg/eclipse/jdt/internal/compiler/IProblemF)V
at com.piler.generateClass(Compiler.java:392)
at com.pile(Compiler.java:38)
at com.pile.SketchCompilationContext.globalVmCompile(SketchCompilationContext.java:403)
at com.taobao.sketch.runtime.SketchRuntimeServer.getGlobalVmTemplate(SketchRuntimeServer.java:622)
at com.taobao.sketch.runtime.SketchRuntimeServer.resolveGloabalVm(SketchRuntimeServer.java:136)
at com.taobao.sketch.runtime.SketchRuntimeServer.initializeVmLibrary(SketchRuntimeServer.java:127)
at com.taobao.sketch.runtime.SketchRuntimeServer.init(SketchRuntimeServer.java:96)
at com.taobao.sketch.SketchEngine.init(SketchEngine.java:66)
at com.taobao.sketch.service.impl.SketchEngineImpl.init(SketchEngineImpl.java:118)
at com.alibaba.citrus.springext.support.BeanSupport.afterPropertiesSet(BeanSupport.java:80)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 39 more
  这是一个webx框架下的javaweb项目,在启动jetty服务器时报的错。一开始看时看到报错,内心是奔溃的,刚接手项目,以前代码又不是我写的,我怎么知道会报找不到方法的是什么原因引起的啊。别急,先看引起这个错误有可能的原因是什么。
  错误可能的原因:
有这个类,该类真的没有这个方法
有这个类,而且有好几个,他们之间发生了冲突
  原因排除:
  1、点击进入报错的代码所在行,在报错的地方打一个debug点,重行启动项目或重现该错误,让程序运行到该行代码:
     
  2、打开display界面(若没有,请在window--show view里面找出该界面),
  手动敲出xxx.class.getProtectionDomain().getCodeSource(),xxx为报错的类的全类名,鼠标选中该行代码,点击界面右上角的J图标,即会打印出到该类对应的包所在的地址。如下图所示。  
  可以看到,结果为:
  (java.security.CodeSource)&(file:/D:/Program%20Files%20(x86)/eclipse/configuration/org.eclipse.osgi/843/0/.cp/lib/core-3.1.1.jar&&no&signer&certificates&)
  3、接着复制该类的全类名,快捷键Ctrl+Shift+T打开open&type界面,查看我们的项目引用到的包中,哪些有这个类:
  我们发现有两个包中有org.eclipse.piler这个类,分别为:
  包一:ecj.3.5.1.jar
  包二:core-3.1.1.jar
  地址分别为:
  但我们发现,刚刚在display中,我们看到的地址,居然不是来自这上面两个地址(上面两个包的地址都在C盘,DEBUG中的包来自D盘),也就是说,实现运行环境引入的包,并不是在我们自己项目中配置的,因为open&typy只能找到自己项目中配的东西。
  那么D盘的这个包,在什么地方引入的呢?
  想想,这个错误是在项目启动时报的,那么除了项目,还有&服务器&可能会引入其他包,那么有没有可能是服务器帮我们引入呢?
  4、打开服务器的Classpath,可以找到服务器确实引入了这个包
  那么我们在服务器的classpath中把这个包&remove&掉。
  5、再次重新启动项目,dubug、卡点、display,这次结果如下:
  发现:实际环境中,现在己经没有引入D盘那个core-3.1.1.jar包了。我们让项目运行下去,发现还是报同样的错&&找不到方法。那么接下来我们让项目引用ecj.3.5.1.jar这个包试试。
  6、ctrl+shift+T、双击进入core-3.1.1.jar中Compiler类所在的目录结构:
  提示:左边栏勾上这个标志,即可展开该包所在的目录:
  同理,打开ecj.3.5.1.jar中Compiler类所在的目录结构。
  最后发现,这个jar包都同一个项目下面,而且两个包都有Compiler类,且排在前面的是core-3.1.1.jar,但是core-3.1.1.jar的Compiler类并没有我们想要的方法,所以报错了。但是eclipse在找类的时候,只要按顺序找到一个,就不会往下找了,所以排在下面的ecj-3.5.1.jar并不会被找到,即使里面有Compiler这个类,且有我们想要的方法。
  7、排除core-3.1.1.jar包:
  该项目是maven项目。我们尝试直接在该项目的pom.xml中搜索core这个包是搜索不到的,那么这个core-3.1.1包可能是因为本项目引入其他项目,而其他项目引入core-3.1.1.jar,所以本项目间接把该包引过来了。
  同时,因为该项目是maven项目,可以通过以下该方法排除这个包:
  排除后,该项目的pom.xml变成:
  假如是非maven项目,那么可以直接从lib中除去该包,或从项目根目录下面打开.classpath文件,找到对应的包的配置,删除该行即可。
  通过该pom.xml我们可以知道,之所以会产生jar包冲突,原因有两个:
  1、&本项目A本身引用了ecj-3.5.1.jar包,同时引入了项目B,而项目B引入了core-3.1.1.jar,所以本项目也相当于引入了core-3.1.1.jar,这就是maven项目中常见的jar包冲突。
  2、&那为什么maven没有自动帮我们解决jar包冲突呢,那是因为ecj-3.5.1.jar包和core-3.1.1.jar包的groupId和artifactId都不一样,所以maven认为这是两个jar包,并不冲突,解决的办法就是像上面那样,加入exclusions排除。所以我们在开发一个组件的时候,起名字是一个很重要的问题,如果升级组件连名字也改了,用户会产生很大的不方便。
  再次启动项目,问题解决。
阅读(...) 评论()java.lang.NoSuchMethodError找不到方法,但是那个方法明明存在 - CSDN博客
java.lang.NoSuchMethodError找不到方法,但是那个方法明明存在
错误信息如下:&
Java代码&&
ERROR&2012-08-15&11:35:12,734&[com.opensymphony.webwork.dispatcher.ServletDispatcher]&-&Could&not&execute&action&&
java.lang.reflect.InvocationTargetException&&
&&&&&&&&at&sun.reflect.NativeMethodAccessorImpl.invoke0(Native&Method)&&
&&&&&&&&at&sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&&
&&&&&&&&at&sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&&
&&&&&&&&at&java.lang.reflect.Method.invoke(Method.java:592)&&
&&&&&&&&at&com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:300)&&
&&&&&&&&at&com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)&&
&&&&&&&&at&com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)&&
&&&&&&&&at&com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)&&
&&&&&&&&at&com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)&&
&&&&&&&&at&com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)&&
&&&&&&&&at&com.yzwb.cctv.logic.SignonInterceptor.intercept(SignonInterceptor.java:327)&&
&&&&&&&&at&com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)&&
&&&&&&&&at&com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)&&
&&&&&&&&at&com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)&&
&&&&&&&&at&com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)&&
&&&&&&&&at&javax.servlet.http.HttpServlet.service(HttpServlet.java:856)&&
&&&&&&&&at&org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)&&
&&&&&&&&at&org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)&&
&&&&&&&&at&org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:172)&&
&&&&&&&&at&org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)&&
&&&&&&&&at&org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:233)&&
&&&&&&&&at&org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)&&
&&&&&&&&at&org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)&&
&&&&&&&&at&org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)&&
&&&&&&&&at&org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)&&
&&&&&&&&at&org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)&&
&&&&&&&&at&org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:594)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)&&
&&&&&&&&at&org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)&&
&&&&&&&&at&org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)&&
&&&&&&&&at&org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)&&
&&&&&&&&at&org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:490)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)&&
&&&&&&&&at&org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)&&
&&&&&&&&at&org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)&&
&&&&&&&&at&org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)&&
&&&&&&&&at&org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)&&
&&&&&&&&at&org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)&&
&&&&&&&&at&org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)&&
&&&&&&&&at&org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)&&
&&&&&&&&at&org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)&&
&&&&&&&&at&org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)&&
&&&&&&&&at&org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)&&
&&&&&&&&at&java.lang.Thread.run(Thread.java:595)&&
Caused&by:&java.lang.NoSuchMethodError:&com/yzwb/cctv/domain/CivilContract.getContractAmount()D&&
&&&&&&&&at&com.yzwb.cctv.web.contract.archive.ArchiveContractQueryAction.queryCivilContract(ArchiveContractQueryAction.java:173)&&
&&&&&&&&at&com.yzwb.cctv.web.contract.archive.ArchiveContractQueryAction.doQuery(ArchiveContractQueryAction.java:78)&&
&&&&&&&&...&48&more&&
我想问一下下面这个Caused by: java.lang.NoSuchMethodError:******D这句话中最后的D是什么意思,以及这个错误为什么会发生。下面贴错误提示中涉及到的代码&
1.JavaBean中的代码,证明那个方法时存在的&
Java代码&&
private&long&contractA&&&
public&long&getContractAmount()&{&&
&&&&return&contractA&&
public&void&setContractAmount(Long&contractAmount)&{&&
&&&&if(contractAmount&!=&null)&&
&&&&&&&&this.contractAmount&=&contractA&&
&&&&else&&
&&&&&&&&this.contractAmount&=&0;&&
2.调用这个方法并报错的那几行代码&
Java代码&&
double&count&=&0;&&
for(Object&o&:&paginationSupport.getItems()){&&
&&&&CivilContract&con&=&(CivilContract)o;&&
&&&&if(con.getContractAmount()&!=&0){&&
&&&&&&&&count&+=&con.getContractAmount();&&
谢谢各位!
<div class="vote" id="vote_solution_
采纳的答案
有时候出现这种怪异的问题,是由于多个版本的class存在。&
比如说:某个java编译成class后,放到classes下面,然后lib目录下,也有这个class所在的jar包,这样就导致classpath实际上有两个相同的class&
<div class="vote" id="vote_solution_
检查下 你的配置这个方法的路径!8成是配错了
<div class="vote" id="vote_solution_
是否为未编译成功的缘故?
<div class="vote" id="vote_solution_
估计在不同的 jar中存在同样的class&
调用class.getProtectionDomain() 看看class在那个jar中&
本文已收录于以下专栏:
相关文章推荐
出现这种问题一般是因为有不同版本的类,导致jvm不知道选择哪一个方法,直接报错
&#160;解决方案:在异常中找到该类,通过类的全名再项目中查找出该类,一般有多个地方,找到之后,就可以选择去掉其中一个...
在项目中偶尔会出现这样的情况,线上的应用报java.lang.NoSuchMethodError异常,然而开发环境却很正常,出错的类没有修改过,然后根据异常提示补上对应的class文件之后又恢复正常,...
写这篇文章也做了下思考,首先是本人技术欠佳。但就是喜欢研究一些东西。因为在此之前有很多的朋友已经写过类似的,很多我也看过,但是讲解的不够深入。对有些朋友提出的问题不能给出答案。在这里,我根据我目前的能...
最近做项目遇到了NoSuchMethodError,定位了很久,最终才解决。
看似诡异的问题,一方面是我们疏忽,导致错误出在了我们最意想不到的地方;还有就是自身知识的匮乏,我们写的代码明明有问题,自己...
问题在编码过程中,往往会遇到jar包冲突的问题。问题的表现特征一般都是抛出java.lang.NoSuchMethodError异常。那么,今天就聊聊怎么解决此类问题。分析此问题跟java的类加载机制...
在刚才的学习用myeclipse整合spring和struts2框架时,在启动项目提交数据后遇页面报java.lang.NoSuchMethodError: antlr.collections.AST...
用myeclipse自带的struts2,spring,hibernate搭建ssh平台
启动时提示下面错误
23:50:07 org.apache.catalina.cor...
在配置strut2的时候老是出现这个问题:
15:14:59 org.apache.catalina.core.StandardContext filterStart
严重: Ex...
java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlC)Z解决方法
org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;Data...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 java lang exception 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信