使用最新版本的Groovy(截至本文撰写时),2.4.0和Windows XP(sp3),我遇到了一个熟悉但令人困惑的错误:
C:\>groovysh
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java
:106)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:128)
Caused by: groovy.lang.MissingPropertyException: No such property: leftPadding f
or class: org.codehaus.groovy.tools.shell.util.HelpFormatter
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptByteco
deAdapter.java:51)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setGroovyObjectProp
erty(ScriptBytecodeAdapter.java:532)
at org.codehaus.groovy.tools.shell.util.HelpFormatter.<init>(HelpFormatt
er.groovy:39)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstru
ctor.java:77)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteN
oUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstru
ctor(CallSiteArray.java:57)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor
(AbstractCallSite.java:230)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor
(AbstractCallSite.java:234)
at org.codehaus.groovy.tools.shell.Main.main(Main.groovy:68)
... 6 more
我使用Groovy 2.3.9没有遇到任何困难,所以我想知道是否有人有建设性的建议。
感谢。
答案 0 :(得分:2)
您的错误发生在HelpFormatter类中。来源可以通过谷歌找到,即在这里: https://github.com/groovy/groovy-core/blob/master/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/util/HelpFormatter.groovy
如您所见,类HelpFormatter扩展了org.apache.commons.cli.HelpFormatter
并期望超类有一个字段leftPadding,但找不到。
如果你在运行groovysh时在你的CLASSPATH上有不同版本的apache commons-cli.jar,可能就是这种情况。
由于我无法重现您的问题,这是我能看到的最可能的原因。
运行
echo%CLASSPATH
在Windows中查看CLASSPATh(我认为)。