簡體   English   中英

IntelliJ Idea groovy.lang.GroovyRuntimeException:模塊版本沖突

[英]IntelliJ Idea groovy.lang.GroovyRuntimeException: Conflicting module versions

我的 maven 構建很好,能夠從 cli 運行 groovy。 但是,如果我嘗試在 IntelliJ Idea(第 15 版社區版)中運行我的 groovy class,它會給我以下錯誤。

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>

我正在使用 spring 啟動。

 <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

如果有人知道這件事,請告訴我。

你必須從項目設置中刪除groovy lib。

shift + alt + ctrl + s,全局庫 - 刪除groovy。 在嘗試運行應用程序/測試時,你應該指出來自maven依賴項的groovy。

@SuperAndrew的建議不是我的情況 - 我沒有在我的項目結構下在全球圖書館注冊的Groovy。 但我確實發現這個StackExchange解決方案解決了我的問題 將此代碼添加到build.gradle文件中。

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

在我將 Gradle 升級到 7.+ 后,我在最近的項目中看到了這一點

這對我造成問題的原因是 Gradle 7.+ 現在正在使用 Groovy 3.+,因此需要升級各種其他插件(例如 spock-core)。

造成這種情況的是各種依賴項的不兼容性,一旦我更新了所有依賴項,這個問題就消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM