[ 
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)

Reply via email to