[ https://issues.apache.org/jira/browse/GROOVY-8338?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16303419#comment-16303419 ]
Slawomir Nowak commented on GROOVY-8338: ---------------------------------------- [~blackdrag] is this issue solved on GROOVY_2_4_X branch of https://github.com/apache/groovy? I'm trying to run spock tests on jdk9, but i'm also having issues with static methods on interfaces. I even tried building groovy-all from sources (GROOVY_2_4_X) and use it in my project, but then I get {code}method: call signature: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;) Illegal type in constant pool{code} Same thing happen when I try to run InterfaceStaticMethodCallTest: {code}java.lang.VerifyError: (class: java_util_stream_Stream$of, method: callStatic signature: (Ljava/lang/Class;[Ljava/lang/Object;)Ljava/lang/Object;) Illegal type in constant pool at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) at java.lang.Class.getConstructor0(Class.java:3075) at java.lang.Class.getConstructor(Class.java:1825) at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.defineClassAndGetConstructor(ClassLoaderForClassArtifacts.java:82) at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compileStaticMethod(CallSiteGenerator.java:262) at org.codehaus.groovy.reflection.CachedMethod.createStaticMetaMethodSite(CachedMethod.java:295) at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.createStaticMetaMethodSite(StaticMetaMethodSite.java:114) at groovy.lang.MetaClassImpl.createStaticSite(MetaClassImpl.java:3421) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:76) at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:161) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) at TestScript0.run(TestScript0.groovy:4) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:574) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:612) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:593) at groovy.test.GroovyAssert.assertScript(GroovyAssert.java:83) at groovy.util.GroovyTestCase.assertScript(GroovyTestCase.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169) at org.codehaus.groovy.vmplugin.v8.InterfaceStaticMethodCallTest.testStreamOf(InterfaceStaticMethodCallTest.groovy:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at junit.framework.TestCase.runTest(TestCase.java:176) at junit.framework.TestCase.runBare(TestCase.java:141) at junit.framework.TestResult$1.protect(TestResult.java:122) at junit.framework.TestResult.runProtected(TestResult.java:142) at junit.framework.TestResult.run(TestResult.java:125) at junit.framework.TestCase.run(TestCase.java:129) at junit.framework.TestSuite.runTest(TestSuite.java:252) at junit.framework.TestSuite.run(TestSuite.java:247) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70){code} > Calling Stream.of from groovy class in JDK 9 fails > -------------------------------------------------- > > Key: GROOVY-8338 > URL: https://issues.apache.org/jira/browse/GROOVY-8338 > Project: Groovy > Issue Type: Bug > Components: groovy-runtime > Affects Versions: 2.4.12 > Reporter: Marcus Nylander > Assignee: Jochen Theodorou > Fix For: 2.4.14 > > > Trying to call Stream.of from groovy class (groovy version 2.4.12) using JDK > 9 (jdk 9 181) fails. > Example: > {code} > package test > import java.util.stream.Stream > class B { > static void main(String[] args) { > Stream.of("1").forEach({ println(it) }) > } > } > {code} > The code above fails with: > Exception in thread "main" java.lang.IncompatibleClassChangeError: Method > java.util.stream.Stream.of(Ljava/lang/Object;)Ljava/util/stream/Stream; must > be InterfaceMethodref constant > at java_util_stream_Stream$of.call(Unknown Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) > at test.B.main(B.groovy:7) > The same occurs for other interface static methods also: > {code} > public interface D { > static D of(String s) { > return new D() { > }; > } > } > class C { > static void main(String[] args) { > D.of("1") > } > } > {code} > Also fails with: > Exception in thread "main" java.lang.IncompatibleClassChangeError: Method > test.D.of(Ljava/lang/String;)Ltest/D; must be InterfaceMethodref constant > at test.D$of.call(Unknown Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) > at test.C.main(C.groovy:7) > Running with JDK 8 works fine. -- This message was sent by Atlassian JIRA (v6.4.14#64029)