groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From MG <mg...@arscreat.com>
Subject Re: please help : GroovyCastException: why ?
Date Mon, 24 Feb 2020 22:30:14 GMT
Article articleTmp = (Article) Article;

in Groovy is the same as

Article articleTmp = (Article) Article.getClass();

in Java.

Article.getClass()

is of type Class<Article>, so casting it to Article will fail - what you 
want to do ist pass an Article instance, not the class, I presume...

hth,
mg


On 24/02/2020 18:24, Mickaël SALMON wrote:
> Hello,
>
> I'm using last Groovy version (3.0.1) in my Java application to run 
> user defined scripts (Java based).
> Here is how a script is executed (sorry for the formatting) :
>
>    public Object eval(String scriptName, String script, Map<String, 
> Object> mapVariable)
>                    throws CochiseException {
>        groovy.lang.Script groovyScript = this.scriptCache.get(scriptName);
>        if (groovyScript == null) {
>            groovyScript = new GroovyShell().parse(script);
>  this.scriptCache.put(scriptName, groovyScript);
>        }
>  groovyScript.setBinding(new Binding(mapVariable));
>        return groovyScript.run();
>    }
>
> I have the following exception when I pass the object "Article" of 
> class "com.sylob.cochise.dm1.ejb.entite.article.Article" in the Map of 
> variables :
>
>     org.codehaus.groovy.runtime.typehandling.GroovyCastException:
>     Cannot cast object 'interface
>     com.sylob.cochise.dm1.ejb.entite.article.Article' with class
>     'java.lang.Class' to class
>     'com.sylob.cochise.dm1.ejb.entite.article.Article'
>
>
> Here is the script :
>
>     import com.sylob.cochise.dm1.ejb.entite.article.Article;
>
>     println "CL import Article : " +  Article.class.getClassLoader()
>     println "CL var Article: " + Article.getClass().getClassLoader()
>
>     Article articleTmp = (Article) Article;
>     // ... some stuff
>
>
> This not seem to be a classLoader problem, because same class loader 
> is used to load both com.sylob.cochise.dm1.ejb.entite.article.Article 
> class in the script and "Article" object in the calling application.
> Also tested with 2.5.9, same error.
>
> What's wrong here ?
>
> Thanks.
>


Mime
View raw message