web-dev-qa-db-ja.com

IntelliJ Idea groovy.lang.GroovyRuntimeException:モジュールバージョンの競合

私の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

誰かがこれについて知っているなら私に知らせてください。

16
bhai

プロジェクト設定からgroovy libを削除する必要があります。

shift + alt + ctrl + s、グローバルライブラリ-groovyを削除します。また、アプリケーション/テストを実行しようとすると、Maven依存関係からGroovyを指す必要があります。

18
SuperAndrew

@SuperAndrewの提案は私の状況ではありませんでした-私は自分のプロジェクト構造の下でグローバルライブラリにGroovyを登録していませんでした。しかし、私は見つけました このStackExchangeソリューションは私の問題を解決しました 。このコードをbuild.gradleファイルに追加します。

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