运行Java App时出现NoSuchMethodError

时间:2013-05-30 18:08:42

标签: java

当我尝试运行我的java控制台应用时,我在Red Hat 5上看到了以下错误,但Ubuntu上没有。

另一个StackOverflow post提到不要混合spring 2和3的版本。

但是我跑find [where I run app - includes classpath] | grep spring | grep 3并看到0结果。因此,我认为这不是spring版本问题。

> Exception in thread "main"
> org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
> Configuration problem: Failed to import bean definitions from URL
> location
> [classpath:/org/eurekastreams/server/conf/applicationContext-model.xml]
> Offending resource: class path resource [conf/applicationContext.xml];
> nested exception is
> org.springframework.beans.factory.BeanDefinitionStoreException:
> Unexpected exception parsing XML document from class path resource
> [org/eurekastreams/server/conf/applicationContext-model.xml]; nested
> exception is java.lang.NoSuchMethodError:org.springframework.aop.config.
AopNamespaceUtils.registerAutoProxyCreatorIfNecessary
(Lorg/springframework/beans/factory/xml/ParserContext;
Lorg/w3c/dom/Element;)V

修改

添加了堆栈跟踪:

Caused by: java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Lorg/w3c/dom/Element;)V

运行mvn dependency:tree后,我看到了spring-aop.jar的几个版本:

$grep "spring-aop" mvn_dependency_tree.txt 
    [INFO] |  +- org.springframework:spring-aop:jar:2.0.8:compile
    [INFO] |  |  |  +- org.springframework:spring-aop:jar:2.0.8:provided
    [INFO] |  |  +- org.springframework:spring-aop:jar:2.0.8:compile
    [INFO] |  |  +- org.springframework:spring-aop:jar:2.5.4:compile

这些不同版本的spring-aop是否可以解释我添加的堆栈跟踪中的AOP错误?

1 个答案:

答案 0 :(得分:1)

看起来版本2.0.8的spring-aop是罪魁祸首。

您需要做的是检查依赖关系树输出(而不是grep)以找出哪个'父'罐子对此版本有依赖性,因此将它拉到您的类路径上。通过删除或升级父jar的版本,您应该能够清理类路径,留下版本2.5.4。

完成此操作后,重建并运行您的应用程序。

以下是有关依赖树的更多信息:

http://maven.apache.org/plugins/maven-dependency-plugin/index.html

http://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html