![](/img/trans.png)
[英]java.lang.IllegalAccessError using org.apache.commons.cli when calling CommandLineParser#parser
[英]NoClassDefFoundError…org/apache/commons/cli/CommandLineParser when Run As, Groovy Script
我剛剛安裝了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。 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
看起來在創建“Groovy Script”運行配置時,主類設置為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"])
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.