将Spring应用程序部署到JBoss时出错 - NoSuchMethodError

时间:2012-04-10 18:47:18

标签: java spring maven dependencies

我创建了一个Spring webapp,该应用程序正在处理tomcat和CloudFoundry,但是我在尝试在JBoss(OpenShift express)上启动应用程序时收到错误。

开始时我收到以下错误:

2012/04/10 11:11:58,967 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-1) Context initialization failed: org.springframework.beans.BeanInstantiationException: 
Could not instantiate bean class [org.springframework.web.context.support.XmlWebApplicationContext]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: 
org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_22]
Caused by: java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
        at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62) [org.springframework.core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53) [org.springframework.core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42) [org.springframework.core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
... 12 more

我认为这是一个JAR冲突/ dupplication并且去检查maven设置是否存在依赖冲突,但是,在检查了Eclipse Maven Dependency heirarchy中的传递依赖关系后,我绝对排除了除3.1.1之外的所有版本(此类问题是在v3.0中引入的,我相信) - 这同时属于Spring-coreorg.springframework.core

任何人都有任何想法,我可能会缺少什么?

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题。

在Eclipse中使用M2Eclipse Maven插件,我已经排除了spring-core依赖项(这已经将库排除在它是传递依赖项的每个依赖项之外),我认为这样就可以了,因为我使用了{{ 1}}库代替。

但是,看起来它只是将它们排除在第一级传递依赖项之外,并且在我构建的WAR文件中,它仍在向下拉org.springframework.core(我之前没有这样做,因为我正在部署到Redhat&# 39; s的OpenShift平台,它花了一些工作来设置,所以我可以scp到服务器来获得内置的战争)

我现在通过明确声明对spring-core.3.0.3的依赖并排除所有其他内容以确保最新的内容被删除来解决此问题。

我认为道德并不相信&#34;已解决的依赖关系&#34;在M2Eclipse插件中查看正在使用的库的视图。