当我尝试运行我的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
错误?
答案 0 :(得分:1)
看起来版本2.0.8的spring-aop是罪魁祸首。
您需要做的是检查依赖关系树输出(而不是grep)以找出哪个'父'罐子对此版本有依赖性,因此将它拉到您的类路径上。通过删除或升级父jar的版本,您应该能够清理类路径,留下版本2.5.4。
完成此操作后,重建并运行您的应用程序。
以下是有关依赖树的更多信息:
http://maven.apache.org/plugins/maven-dependency-plugin/index.html