2

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

另一个 StackOverflow帖子提到不要混合spring2 和 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我添加的堆栈跟踪中的错误吗?

4

1 回答 1

1

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

您需要做的是检查依赖关系树输出(而不是 grep 它)以找出哪些“父”jar 对此版本有依赖关系,因此将其拉到您的类路径中。通过删除或升级父 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

于 2013-05-30T20:17:11.980 回答