我刚刚安装了Eclipse KEPLER,并试图从github带回我所有的项目。这些项目都是gradle项目,所以我的程序非常…
一切似乎都很好,除了我不能“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。堆栈跟踪是什么意思,我如何克服它?
导致我的问题的存储库https://github.com/robertkuhar/StackOverflow
我的gradle是1.11在eclipse kepler中的groovy 1.8.6上,带有Groovy-Eclipse插件版本:2.8.0. xx-20130703-1600-e43-RELEASE
看起来在创建Groovy脚本运行配置时,主类被设置为org.codehaus.groovy.tools. GroovyStarter
而不是您要运行的脚本。用您要运行的Groovy类/脚本替换它可以解决问题。
更新
经过一番挖掘解决问题的方法是:
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"])
}
}
}
}