eclipse - NoClassDefFoundError…运行方式为Groovy脚本时,org/apache/commons/cli/CommandLineParser

标签 eclipse groovy gradle eclipse-kepler

我刚刚安装了Eclipse KEPLER,并试图将所有项目从github引入。这些项目都是gradle项目,所以我的程序几乎很多。

  • 克隆git仓库
  • gradle eclipse
  • 将项目导入Eclipse

  • 一切似乎都很好,但我无法“运行方式,Groovy脚本”项目中的脚本。当我尝试时,控制台会弹出...
    java.lang.NoClassDefFoundError: org/apache/commons/cli/CommandLineParser
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
        at java.lang.Class.getMethod0(Class.java:2764)
        at java.lang.Class.getMethod(Class.java:1653)
        at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:99)
        at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:130)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.CommandLineParser
        at org.codehaus.groovy.tools.RootLoader.findClass(RootLoader.java:156)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at org.codehaus.groovy.tools.RootLoader.loadClass(RootLoader.java:128)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 6 more
    

    。有趣的是,我可以“运行为Java应用程序”而不会出现问题。它绝对是一个Groovy项目,因为它在项目图标中带有G。 stacktrace是什么意思,我该如何克服?

    导致我的问题的存储库位于https://github.com/robertkuhar/StackOverflow

    我的成绩是使用Groovy-Eclipse插件版本:2.8.0.xx-20130703-1600-e43-RELEASE在eclipse kepler中的groovy 1.8.6上的1.11

    最佳答案

    看起来在创建“Groovy脚本”运行配置时,主类设置为org.codehaus.groovy.tools.GroovyStarter而不是您打算运行的脚本。用您要运行的Groovy类/脚本替换它可以解决该问题。

    更新

    经过一些挖掘来解决问题的方法是:

  • 从Gradle构建中删除Groovy依赖项。
  • 按照此answer
  • 中的建议配置项目的类路径和性质

    build.gradle
    eclipse {
        project {
            natures.add 'org.eclipse.jdt.groovy.core.groovyNature'
        }
        classpath {
            file {
                withXml {
                    Node node = it.asNode()
                    node.appendNode('classpathentry',[exported:"true",kind:"con",path:"GROOVY_SUPPORT"]) 
                    node.appendNode('classpathentry',[exported:"true",kind:"con",path:"GROOVY_DSL_SUPPORT"])
                }
            }
        }
    }
    

    关于eclipse - NoClassDefFoundError…运行方式为Groovy脚本时,org/apache/commons/cli/CommandLineParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890501/

    相关文章:

    java - 点击按钮后创建文本字段(Eclipse/Android)

    java - 该方法只能设置 public/protected/private 之一

    java - 将参数传递给 gradle 构建脚本

    java - Intellij IDEA classpath.jar 导致问题

    Eclipse JSTL 核心自动完成

    eclipse - 在 Eclipse 中更改概览标尺颜色

    java - 在 Groovy 控制台中试用 Geb

    Jenkins EnvInject 插件 + 流水线作业

    Android 在输出库中包含所有依赖项

    android - 在 gradle 中重命名类