运行方式,Groovy脚本时NoClassDefFoundError ... org / apache / commons / cli / CommandLineParser

时间:2014-04-06 05:55:42

标签: eclipse groovy gradle eclipse-kepler

我刚刚安装了Eclipse KEPLER,并且正在尝试将所有项目从github中恢复。这些项目都是gradle项目所以我的程序非常......

  1. 克隆git repo
  2. gradle eclipse
  3. 将项目导入Eclipse
  4. 一切似乎都很好,除了我不能“Run As,Groovy Script”项目中的脚本。当我尝试时,控制台会喷出......

    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

    我的gradle在eclipse kepler的groovy 1.8.6上是1.11,带有Groovy-Eclipse插件版本:2.8.0.xx-20130703-1600-e43-RELEASE

1 个答案:

答案 0 :(得分:2)

在创建" 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"])
            }
        }
    }
}