You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2022/05/22 16:09:00 UTC

[jira] [Updated] (GROOVY-896) Problem when accessing arrays of arrays from groovy

     [ https://issues.apache.org/jira/browse/GROOVY-896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Milles updated GROOVY-896:
-------------------------------
    Labels: ClassFormatError  (was: )

> Problem when accessing arrays of arrays from groovy
> ---------------------------------------------------
>
>                 Key: GROOVY-896
>                 URL: https://issues.apache.org/jira/browse/GROOVY-896
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 1.0-JSR-2
>         Environment: Windows, Java 1.5.0_03
>            Reporter: Martin C. Martin
>            Assignee: Jochen Theodorou
>            Priority: Major
>              Labels: ClassFormatError
>             Fix For: 1.0-JSR-5
>
>
> If I create a Java class which contains a field declared as:
> int[][] x;
> then pass an object to groovy and ask it to execute:
> println (the object).x[0]
> it throws:
> Exception in thread "main" java.lang.ClassFormatError: Illegal class name "gjdk/[I_GroovyReflectorArray" in class file gjdk/[I_GroovyReflectorArray
> Printing just (the object).x works fine.
> The full code which reproduces this error is:
> bug4.groovy:
> class bug4 {
>    def bubbles(a) {
>       println a.x[0];
>    }
> }
> bug4j.java:
> import groovy.lang.*;
> import java.io.*;
> import org.codehaus.groovy.control.CompilationFailedException;
> public class bug4j {
> 	public int[][] x;
> 	
> 	void ricky()  throws CompilationFailedException, InstantiationException,
> 	IOException,  IllegalAccessException {
> 		x = new int[][] {new int[5], new int[4], new int[3]};
> 		
> 		// Create the groovy object
> 		ClassLoader parent = getClass().getClassLoader();
> 		GroovyClassLoader loader = new GroovyClassLoader(parent);
> 		Class groovyClass = loader.parseClass(new File("bug4.groovy"));
> 		GroovyObject bug4 = (GroovyObject) groovyClass.newInstance();
> 		Object[] args = {this};
> 		bug4.invokeMethod("bubbles", args);
> 	}
> 	public static void main(String[] args) throws CompilationFailedException,
> 		InstantiationException, IOException,  IllegalAccessException  {
> 		(new bug4j()).ricky();
> 	}
> }



--
This message was sent by Atlassian Jira
(v8.20.7#820007)