每当我在IntelliJ中运行我的项目时,它都能正常工作,但是,每当我尝试将其作为jar运行时,它都会引发异常

时间:2019-09-19 15:50:11

标签: java spring

我正在开发一个在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?

1 个答案:

答案 0 :(得分:2)

这可能有帮助:

NoSuchMethodError on compiling Spring Application with FileSystemXmlApplicationContext

-来自链接的答案-

您的类路径中有不兼容的jar文件。检查spring-context-supportspring-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相同