【问题标题】:Maven / Spring: AopNamespaceUtils NoSuchMethod ErrorMaven / Spring:AopNamespaceUtils NoSuchMethod 错误
【发布时间】:2011-09-14 02:09:56
【问题描述】:

使用 Maven 在 Windows 下构建我的项目可以正常工作,但是当我在 Linux 下构建它时,我得到一个关于其中一个 spring 库的NoSuchMethodError

我猜这与跨平台的类加载器差异以及我的依赖项中的某个地方有关,我可能有两次相同的类,但是 windows 正在加载一个而 linux 加载另一个?

以前有没有人遇到过这个问题,或者对如何进一步调试这个错误有任何建议?

nested exception is java.lang.NoSuchMethodError:             
org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Lorg/w3c/dom/Element;)V:
java.lang.NoSuchMethodError:     
org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Lorg/w3c/dom/Element;)V
 at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser$AopAutoProxyConf

Stack Trace Pastie
POM.xml Pastie

【问题讨论】:

标签: java spring maven


【解决方案1】:

你的 spring 依赖有太多不同的版本:

org.springframework:spring-beans:jar:2.5.6:compile
org.springframework:spring-aop:jar:2.0.8:compile
org.springframework:spring-jms:jar:3.0.5.RELEASE:compile

使所有spring依赖都具有相同的版本(最好是3.0.5.RELEASE)

【讨论】:

  • 谢谢,其他库的依赖项将这些库的不兼容版本作为传递(?)依赖项引入。为库添加显式 <dependency> 标记意味着我可以将版本固定到消除运行时错误的最新版本。
  • non-trivial 更改,在本例中,spring-beansspring-aop 使用 3.0.5.RELEASE?我认为需要进行回归测试以确保新版本不会破坏软件。
猜你喜欢
  • 2017-02-02
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2016-12-14
相关资源
最近更新 更多