解决错误java.lang.NoSuchMethodError:org.codehaus.groovy.ast.ModuleNode.getStarImports()Ljava/util/List;

DHR*_*SAL 11 java groovy

我遇到了这个例外.

Exception :java.lang.NoSuchMethodError: org.codehaus.groovy.ast.ModuleNode.getStarImports()Ljava/util/List;
Run Code Online (Sandbox Code Playgroud)

我尝试了各种版本的groovy jar,如groovy 1.8.4,groovy 1.8.6等.但我无法摆脱这个错误.

Mik*_*ler 19

当我在类路径中同时拥有2个不同版本的Groovy时,这发生在我身上.检查您的类路径,特别是如果使用混淆它的东西,如Eclipse或Maven.

在我的具体情况下,我试图使用Groovy 1.8.6但是Maven依赖项在1.6.5中拖动导致错误.它在命令行上运行单元测试很好,但不能在Eclipse中运行.

  • 就我而言,这是 Maven `gmaven-plugin` 1.5 和 `groovy-all` 2.0.1 之间的冲突。我将 `groovy-all` 降级到 1.7.5 并解决了这个问题。 (2认同)

Mic*_*rth 6

要使用Groovy 2.x进行编译,请尝试将其添加到gmaven插件元素:

<configuration>
    <providerSelection>2.0</providerSelection>
    <source>2.0</source>
</configuration>
Run Code Online (Sandbox Code Playgroud)

例如:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>generateStubs</goal>
                        <goal>compile</goal>
                        <goal>generateTestStubs</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <providerSelection>2.0</providerSelection>
                <source>2.0</source>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

<dependencies>  
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.1.9</version>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

似乎工作.