[ https://issues.apache.org/jira/browse/GROOVY-11327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
KAHA updated GROOVY-11327: -------------------------- Description: This is simple example parsing easy source and run script. {code:java} import groovy.lang.DelegatingMetaClass; import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; import groovy.lang.Script; public class GroovyTest { public static final GroovyClassLoader cLoader = new GroovyClassLoader(); public static interface A { public static void test() { System.out.println("OK"); } } public static class MyContext implements A { public MyContext(){ } } public static void main(String[] args) { try { String scriptText = "test();"; Class cls = cLoader.parseClass(scriptText); GroovyObject object = (GroovyObject) cls.getConstructor().newInstance(); if (object instanceof Script) { Script scr = ((Script) object); MyContext ctx = new MyContext(); scr.setMetaClass(new DelegatingMetaClass(MyContext.class)); scr.run(); } } catch (Exception e) { e.printStackTrace(); } } } {code} [^GroovyTest.java] Groovy version 3.0.12 correctly calls the test() method which is static on the A interface and prints "OK" Groovy version 3.0.20 will print an error "groovy.lang.MissingMethodException: No signature of method: GroovyTest$MyContext.test() is applicable for argument types: () values: []" was: This is simple example parsing easy source and run script. {code:java} import groovy.lang.DelegatingMetaClass; import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; import groovy.lang.Script; public class GroovyTest { public static final GroovyClassLoader cLoader = new GroovyClassLoader(); public static interface A { public static void test() { System.out.println("OK"); } } public static class MyContext implements A { public MyContext(){ } } public static void main(String[] args) { try { String scriptText = "test();"; Class cls = cLoader.parseClass(scriptText); GroovyObject object = (GroovyObject) cls.getConstructor().newInstance(); if (object instanceof Script) { Script scr = ((Script) object); MyContext ctx = new MyContext(); scr.setMetaClass(new DelegatingMetaClass(MyContext.class)); scr.run(); } } catch (Exception e) { e.printStackTrace(); } } } {code} [^GroovyTest.java] Groovy version 3.0.20 will print an error "groovy.lang.MissingMethodException: No signature of method: GroovyTest$MyContext.test() is applicable for argument types: () values: []" > Groovy 3.0.20 cannot invoke static method on interface implemented by context > ----------------------------------------------------------------------------- > > Key: GROOVY-11327 > URL: https://issues.apache.org/jira/browse/GROOVY-11327 > Project: Groovy > Issue Type: Bug > Affects Versions: 3.0.20 > Reporter: KAHA > Priority: Minor > Attachments: GroovyTest.java > > > This is simple example parsing easy source and run script. > {code:java} > import groovy.lang.DelegatingMetaClass; > import groovy.lang.GroovyClassLoader; > import groovy.lang.GroovyObject; > import groovy.lang.Script; > public class GroovyTest { > public static final GroovyClassLoader cLoader = new GroovyClassLoader(); > public static interface A { > public static void test() { > System.out.println("OK"); > } > } > public static class MyContext implements A { > public MyContext(){ > } > } > public static void main(String[] args) { > try { > String scriptText = "test();"; > Class cls = cLoader.parseClass(scriptText); > GroovyObject object = (GroovyObject) > cls.getConstructor().newInstance(); > if (object instanceof Script) { > Script scr = ((Script) object); > MyContext ctx = new MyContext(); > scr.setMetaClass(new DelegatingMetaClass(MyContext.class)); > scr.run(); > } > } catch (Exception e) { > e.printStackTrace(); > } > } > } > {code} > [^GroovyTest.java] > Groovy version 3.0.12 correctly calls the test() method which is static on > the A interface and prints "OK" > Groovy version 3.0.20 will print an error > "groovy.lang.MissingMethodException: No signature of method: > GroovyTest$MyContext.test() is applicable for argument types: () values: []" -- This message was sent by Atlassian Jira (v8.20.10#820010)