我正在开发一个在IntelliJ中可以正常工作的项目,但是从中构建一个jar之后,我得到了一个例外:
Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.beans.factory.config.ConfigurableListableBeanFactory.clearMetadataCache()V
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:183)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:694)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85)
我不知道为什么它可以在IntelliJ中正常运行,但不能运行Jar?
答案 0 :(得分:2)
这可能有帮助:
NoSuchMethodError on compiling Spring Application with FileSystemXmlApplicationContext
-来自链接的答案-
您的类路径中有不兼容的jar文件。检查spring-context-support
和spring-beans
的版本
缺少的方法是在春季4.2中引入的:
void clearMetadataCache()
清除合并的bean定义缓存,删除bean的条目 还不适合完全元数据缓存的文件。 通常在更改原始bean定义后触发, 例如在应用BeanFactoryPostProcessor之后。请注意, 此时已创建的bean将保留 周围。
因为:4.2
另请参见:getBeanDefinition(java.lang.String), ConfigurableBeanFactory.getMergedBeanDefinition(java.lang.String)
检查spring-context-support
的版本是否与spring-beans
相同