Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.5.5
-
None
Description
I'm trying to follow the tutorial about the use of CliBuilder in Groovy with Groovy 2.5.5. Copying the code at Annotating methods of an interface paragraph, at runtime I have the following Exception:
Exception in thread "main" org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{help=groovy.cli.picocli.CliBuilder$_extractAttributesFromMethod_closure12@3bb9a3ff}' with class 'java.util.LinkedHashMap' to class 'mypackage.IHello' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: mypackage.IHello(LinkedHashMap) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:412) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:328) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:242) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:617) at mypackage.MyMain.main(MyMain.groovy:20)Exception in thread "main" org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{help=groovy.cli.picocli.CliBuilder$_extractAttributesFromMethod_closure12@3bb9a3ff}' with class 'java.util.LinkedHashMap' to class 'mypackage.IHello' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: mypackage.IHello(LinkedHashMap) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:412) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:328) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:242) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:617) at mypackage.MyMain.main(MyMain.groovy:20)
The exception occurs at this line:
IHello hello = cli.parseFromSpec(IHello, argz)
The exception goes away (and all works fine) if I replace it with:
def hello = cli.parseFromSpec(IHello, argz)
I tried to downgrade Groovy down to version 2.5.0 and I always get the exception. So this really puzzles me, since the mentioned tutorial is quite simple and straight to follow...