【问题标题】:IntelliJ Idea groovy.lang.GroovyRuntimeException: Conflicting module versionsIntelliJ Idea groovy.lang.GroovyRuntimeException:模块版本冲突
【发布时间】:2016-02-20 08:17:46
【问题描述】:

我的 maven 构建很好,并且能够从 cli 运行 groovy。但是,如果我尝试在 IntelliJ Idea(版本 15 社区版)中运行我的 groovy 类,它会给我以下错误。

Exception in thread "main" java.lang.ExceptionInInitializerError
at org.codehaus.groovy.runtime.InvokerHelper.<clinit>(InvokerHelper.java:61)
at groovy.lang.GroovyObjectSupport.<init>(GroovyObjectSupport.java:32)
at groovy.lang.Closure.<init>(Closure.java:219)
at groovy.lang.Closure.<init>(Closure.java:236)
at groovy.lang.Closure$1.<init>(Closure.java:203)
at groovy.lang.Closure.<clinit>(Closure.java:203)
at filter.App.<clinit>(App.groovy)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.3.9 and you are trying to load version 2.4.5
    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.<init>(MetaClassRegistryImpl.java:110)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:71)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:33)
    ... 10 more

不知道如何摆脱这个。

这是我的 pom 依赖项。

    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.4.5</version>
    </dependency>

我正在使用弹簧靴。

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.2.RELEASE</version>
    <relativePath></relativePath>
</parent>

这是我安装在系统中的 groovy 版本。

Groovy Version: 2.4.5 JVM: 1.8.0_60 Vendor: Oracle Corporation OS: Linux

如果有人知道这件事,请告诉我。

【问题讨论】:

  • 您正在将其加载到其他地方的 intellij 中

标签: intellij-idea groovy spring-boot


【解决方案1】:

您必须从项目设置中删除 groovy 库。

shift+alt+ctrl + s,全局库 - 删除 groovy。当尝试运行应用程序/测试时,您应该从 Maven 依赖项中指向 groovy。

【讨论】:

  • 这解决了我在 Gradle 构建中的问题。谢谢。
  • @minsk 只是项目设置
【解决方案2】:

@SuperAndrew 的建议不是我的情况——我没有在我的项目结构下的 Global Libraries 下注册 Groovy。但我确实找到了this StackExchange solution resolved my issue。将此代码添加到您的 build.gradle 文件中。

configurations.all {
    resolutionStrategy {
        force 'org.codehaus.groovy:groovy-all:2.4.4'
    }
}

【讨论】:

  • 如果我使用 kotlin (build.gradle.kts) 文件会怎样?
  • 感谢您的解决方案;对于像我这样不熟悉 gradle 的人来说,将它添加到“buildscript”部分会很好:)
【解决方案3】:

在我将 Gradle 升级到 7 后,我在最近的一个项目中看到了这一点。

这对我造成问题的原因是 Gradle 7.+ 现在使用的是 Groovy 3.+,因此需要升级各种其他插件(例如 spock-core)。

正是各种依赖项的不兼容导致了这种情况,一旦我更新了所有依赖项,这个问题就消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2017-06-27
    • 2017-07-25
    • 1970-01-01
    • 2017-07-01
    • 2013-06-17
    • 2019-08-07
    相关资源
    最近更新 更多