java - 由于版本不兼容,STS不会响应

标签 java spring spring-tool-suite eclipse-oxygen

我的 STS 3.9.4.RELEASE(内部版本:201804120921,平台:Eclipse Oxygen.3a 4.7.3a) 经常崩溃,原因是:

!ENTRY org.springframework.ide.eclipse.beans.core 1 0 2018-04-26 09:23:26.627
!MESSAGE Error occured processing '/project/WebContent/WEB-INF/context/security.xml'
!STACK 0
java.lang.NoSuchMethodError: org.springframework.beans.factory.support.BeanDefinitionBuilder.setSource(Ljava/lang/Object;)Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;
    at org.springframework.security.config.ConcurrentSessionsBeanDefinitionParser.parse(ConcurrentSessionsBeanDefinitionParser.java:64)
    at org.springframework.security.config.HttpSecurityBeanDefinitionParser.registerConcurrentSessionControlBeansIfRequired(HttpSecurityBeanDefinitionParser.java:261)
    at org.springframework.security.config.HttpSecurityBeanDefinitionParser.parse(HttpSecurityBeanDefinitionParser.java:147)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
    at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1410)
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1434)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1400)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:172)
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1363)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.registerBeanDefinitions(BeansConfig.java:410)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$2.loadBeanDefinitions(BeansConfig.java:394)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:453)
    at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$3.call(BeansConfig.java:1)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我的项目使用了spring-security-core:2.0.8.RELEASEspring-core:3.2.0.RELEASE,所以很明显Spring的版本我的项目使用的 Spring 版本与 IDE 用于分析 bean 的 Spring 版本不兼容。我尝试过:

  1. 从配置文件中删除有问题的 bean xml(项目 > 属性 > Spring > Beans 支持 > 配置文件 > 删除上面的 xml)
  2. 在我的项目中完全禁用 Bean 验证(项目 > 属性 > Spring > 项目 validator > 取消选中 Beans validator )

但他们都没有帮助。此错误导致:

  1. 保存到卡住(表示用户操作正在等待后台工作完成,但实际上没有)即使在多次重新启动后,
  2. 关闭/重新启动 STS 失败(它只是导致 0 进度),迫使我终止该进程

有什么办法可以解决这个问题吗?

最佳答案

不幸的是,看起来确实使用的库版本与 IDE 内部用于创建 beans 模型的 Spring 版本不兼容,因此从项目属性中删除有问题的 Spring XML 配置文件是正确的方法对于这个问题。

但看起来您的 XML 仍在用于创建内部 bean 模型。因此,请确保禁用自动配置文件检测机制,否则该机制会一次又一次地找到您的 XML 文件。

关于java - 由于版本不兼容,STS不会响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50044763/

相关文章:

java - 使用监听器从 httpURLConnection 检索数据

java - Model.listSubjectsWithProperty(Property p, String o) 不列出具有相同字符串值的类型文字的资源

JAVA/GWT - DateFormat 恢复为 1/15/1970

java - 无法解决与Java Threads相关的教科书示例

java - 是否可以在64位操作系统中使用32位STS?

java - 小程序 CLASS_NOT_FOUND_EXCEPTION

Mysql:在 Spring 中禁用每次插入时的自动提交

java - Spring:从Spring Boot服务连接Sql服务器

javascript - 为什么此字符编码问题只发生在特定系统上?

eclipse - STS启动时出现 'Unable to find Asm for stackmap generation'错误如何解决?