Spring 工具套件中存在冲突的 Groovy 版本

Conflicting Groovy versions in Spring Tools Suite

当我点击 运行 As->Spring Boot App 时,遇到以下错误信息:

Exception in thread "main" java.lang.ExceptionInInitializerError at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.(GroovyBeanDefinitionReader.java:129) at org.springframework.boot.BeanDefinitionLoader.(BeanDefinitionLoader.java:84) at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:668) at org.springframework.boot.SpringApplication.load(SpringApplication.java:609) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:961) at org.springframework.boot.SpringApplication.run(SpringApplication.java:950) at com.connectedworldservices.de.app.main.Application.main(Application.java:45) Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.3.8 and you are trying to load version 2.3.2 at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:509) at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:77) at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:71) at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:53) at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:110) at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.(MetaClassRegistryImpl.java:71) at groovy.lang.GroovySystem.(GroovySystem.java:33) ... 8 more

我看到一些人说这与类路径有关,但无法找到如何在 Spring Tools Suite 中更改它。如果我单击项目中的文件夹并单击 运行 配置,我可以看到 classpath 选项卡但看不到其中的 Groovy 引用,尽管在source 选项卡我可以看到对 Groovy 2.3.8 和 2.3.2 的引用,但是当我单击它们时,删除它们的选项显示为灰色。

有谁知道如何在 Spring Tools Suite 中解决这个问题?

感谢您的帮助。

发生这种情况是因为您正在使用 Eclipse 的 Groovy 插件。当它检测到 Groovy 项目时,它会将 Groovy 运行时附加到该项目,因为您可能需要一个。 Spring Boot 做同样的事情,你最终在类路径上得到两个不同版本的 Groovy。

要解决此问题,您需要打开项目的 "Java Build Path" 属性,单击 "Libraries" 选项卡,然后删除条目 "Groovy Runtime Libraries".