1

我创建了一个 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 冲突/重复,并去检查 maven 设置是否存在依赖冲突,但是,在检查了 Eclipse Maven 依赖层次结构中的传递依赖之后,我明确排除了除 3.1.1 之外的所有版本(有问题的这个类是我相信是在 v3.0 中引入的)-Spring-coreorg.springframework.core

有人知道我可能会错过什么吗?

4

1 回答 1

1

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

在 Eclipse 中使用 M2Eclipse Maven 插件,我排除了spring-core依赖项(这已将库从它是传递依赖项的每个依赖项中排除),我认为这没问题,因为我使用的是org.springframework.core库。

但是,它看起来只是将它们排除在第一级传递依赖项之外,并且在我构建的 WAR 文件中,它仍在下拉spring-core.3.0.3(我之前没有这样做,因为我正在部署到 Redhat 的 OpenShift 平台,这需要一些工作设置好东西,这样我就可以 scp 到服务器来构建战争)

我现在已经通过明确声明对所有其他人的依赖spring-core.3.1.1并排除所有其他人来解决这个问题,以确保最新的被拉下来。

我想道德是不要相信 M2Eclipse 插件中的“已解决的依赖项”视图来查看正在使用的库。

于 2012-04-10T20:25:13.550 回答