神秘的NoSuchMethodError&不能是类路径...可以吗?

问题描述

| 我已经与这个错误进行了3个小时的斗争。 我已经检查了构建路径和类路径,它们是相同的,这是一个相当大的Web应用程序,在Tomcat和Geronimo上运行,它为每个组件都有一个构建文件,然后有一个主文件将它们绑定在一起,但是我我查看了ant生成文件,并将它们与其他依赖于第三方库的工作组件进行了比较,我看不出有什么区别。
<fileset dir=\"${home.dir}/component/lib\" includes=\"*.jar\"/>
一切似乎都井然有序。 如果我从JUnit测试中调用此方法,则在eclipse中运行,则毫无问题,如果我运行服务器,则会收到此异常。 另外,我还有两个该组件使用的库,我只是将它作为用户库添加到eclipse中,并在build.xml中引用的组件库中添加了它,并且没有问题。当逻辑似乎使我失败并且还没有运气时,我已经尝试过动摇罐子来尝试和尝试错误。 使事情变得更加陌生的是,我现在记得,我遇到了这个问题,因为我编写的一些代码甚至不在库中。 java.lang.NoSuchMethodError,因为eclipse偶尔会做一些随机的事情,所以我只是更改了方法名并进行了清理并成功了。 我已经尝试多次清洁和重建整个Web应用程序,而没有进行任何更改。 我想要一些有关如何进一步解决该问题的建议,以便我可以尝试查找错误,除构建文件之外,在其他任何定义了类路径的地方,如何调试类路径问题呢? 关于如何查明问题的任何建议将不胜感激。
Exception: java.lang.NoSuchMethodError
     [java] Message: com.google.common.collect.ImmutableMultimap.of()Lcom/google/common/collect/ImmutableMultimap;
     [java] ---- stack trace ---------------------------------------------------------------
     [java] java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMultimap.of()Lcom/google/common/collect/ImmutableMultimap;
     [java] com.google.gdata.util.common.net.UriParameterMap.<clinit>(UriParameterMap.java:78)
     [java] com.google.gdata.client.Service.computeQueryMap(Service.java:2190)
     [java] com.google.gdata.client.Service.access$000(Service.java:94)
     [java] com.google.gdata.client.Service$ClientStreamProperties.<init>(Service.java:1839)
     [java] com.google.gdata.client.Service$ClientOutputProperties.<init>(Service.java:1986)
     [java] com.google.gdata.client.Service.writeRequestData(Service.java:2029)
     [java] com.google.gdata.client.Service.insert(Service.java:1408)
     [java] com.google.gdata.client.GoogleService.insert(GoogleService.java:599)
     [java] com.google.gdata.client.appsforyourdomain.AppsForYourDomainService.insert(AppsForYourDomainService.java:100)
     [java] za.co.venturenet.api.googleapps.GoogleAppsServices.createUser(GoogleAppsServices.java:437)
     [java] za.co.venturenet.api.googleapps.GoogleAppsServices.createUser(GoogleAppsServices.java:336)
     [java] za.co.venturenet.api.googleapps.GoogleAppsFacade.createNewVenturenetUser(GoogleAppsFacade.java:158)
    

解决方法

        NoSuchMethodError表示已找到该类,但未找到该类中的引用方法。造成这种情况的最典型原因是访问了错误的类/库版本。由于您的问题仅在服务器上运行时才会显现,因此我将查看您服务器的配置。该库的另一个版本可能连接到服务器的系统类加载器中(这将超出Webapp中捆绑的内容)。     ,        >因为eclipse偶尔会做一些随机的事情,所以我只是更改了方法名称并进行了清理并成功了。 我遇到了相同的错误,并且尝试了相同的解决方案:更改方法名称,或在Java文件中添加空行,然后重新构建。它通常只工作一次。但是在第二台服务器启动时,NoSuchMethodError返回相同的方法标识符。 我的eclipse环境构建了一个\“ target / classes \”文件夹,该文件夹获取web-inf类的副本。 删除该文件夹似乎已经解决了我的随机NoSuchMethodError问题,这可能是由于无法解析要加载的实例引起的。 你的旅费可能会改变。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...