由于Property类中的NoSuchMethodError导致Spring BeanCreationException

时间:2014-05-31 17:09:20

标签: java spring maven properties classpath

我目前正在尝试启动使用Maven构建的应用程序的服务器端;干净安装是成功的,但然后tomcat7:运行失败,出现以下Spring错误消息

04:21:19,059 [localhost-startStop-1] ERROR org.springframework.web.context.ContextLoader - 
Context initialization failed org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'properties' defined in class path resource [context.xml]: 
Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: 
org.springframework.core.convert.Property.<init>(Ljava/lang/Class;Ljava/lang/reflect/Method;
Ljava/lang/reflect/Method;Ljava/lang/String;)V

context.xml中的相关bean定义如下

<bean id="properties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:server.properties"/>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>

研究表明,这类错误通常与类路径上的错误JAR版本有关。在这个特定的应用程序中,Spring版本3.2.4.RELEASE依赖项是在Maven pom.xml中定义的,并且检查了相关的org.springframework.core.convert.Property类的API,它似乎是构造函数Property(Class objectType,Method readMethod) ,Method writeMethod,String name)实际上在此版本中可用。任何想法都赞赏

1 个答案:

答案 0 :(得分:1)

尝试使用-verbose选项运行java。

它显示了已经从中加载了类。

看起来Tomcat的bootstrap类加载器中存在一个spring jar - 旧版本的Spring。