当运行一个非常基本的 Spring 应用程序并使用以下命令创建 Bean Factory 时文件系统Xml应用程序上下文,我遇到一个无此类方法错误.
The beans.xml文件位于应用程序的根目录下的 pom.xml 中,如下所示:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<bean id="person" class="com.xyz.practice.Person">
</bean>
</beans>
Person 类如下所示:
package com.xyz.practice;
public class Person {
public void speak(){
System.out.println("Hello I'm a Person");
}
}
主类 App.java 如下所示:
package com.xyz.practice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("beans.xml");
Person person = (Person) context.getBean("person");
person.speak();
}
}
运行应用程序时,抛出以下异常:
INFO: Loading XML bean definitions from file [/home/salmank/Documents/springWithAbc/beans.xml]
Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableListableBeanFactory.clearMetadataCache()V
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:185)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:678)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:520)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84)
at com.xyz.practice.App.main(App.java:9)
您的类路径中有不兼容的 jar 文件。检查版本spring-context-support
and spring-beans
缺失的方法是在spring 4.2中引入的:
无效清除元数据缓存()
清除合并的 Bean 定义缓存,删除 Bean 的条目
尚未被视为有资格进行完整元数据缓存。
通常在更改原始 bean 定义后触发,
例如应用 BeanFactoryPostProcessor 之后。请注意,元数据
此时已经创建的bean将被保留
大约。
自:4.2
另请参阅:getBeanDefinition(java.lang.String),
ConfigurableBeanFactory.getMergedBeanDefinition(java.lang.String)
检查版本是否spring-context-support
那么是一样的spring-beans
顺便:去掉xsd位置末尾的Version:
http://www.springframework.org/schema/beans/spring-beans.xsd">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)