[
https://issues.apache.org/jira/browse/GROOVY-10413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King closed GROOVY-10413.
------------------------------
> IllegalAccessException when using closures for functional interfaces with
> default methods
> -----------------------------------------------------------------------------------------
>
> Key: GROOVY-10413
> URL: https://issues.apache.org/jira/browse/GROOVY-10413
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 3.0.9
> Environment: Groovy 3.0.9, Amazon Corretto 17.0, Windows 10
> Enterprise, German, x64
> Reporter: Christoph Loy
> Priority: Major
> Fix For: 4.0.0-beta-1
>
> Attachments: groovy-bug-j17.zip
>
>
> h3.
> h3. Given:
> * A functional interface `IStillFunctional` with a method `foo` and a
> default-method `bar`.
> * A java method `doConsume(IStillFunctional)` (defined in a Java-Class)
> I get an `IllegalAccessException` when I pass a Closure to the `doConsume`
> method and then call the default-method `bar`.
> h3. Stacktrace:
>
> {code:java}
> Caught: java.lang.reflect.InvocationTargetException
> java.lang.reflect.InvocationTargetException
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at jdk.proxy2/jdk.proxy2.$Proxy18.bar(Unknown Source)
> at com.Consumer2.doConsume(Consumer2.java:6)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at com.GroovyMain.run(GroovyMain.groovy:3)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at com.GroovyMain.main(GroovyMain.groovy)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> Caused by: java.lang.IllegalAccessException: module jdk.proxy2 does not open
> jdk.proxy2 to unnamed module @51565ec2
> ... 19 more {code}
> I attached a minimal project with this issue to the ticket.
>
> h3. Observations:
> * The issue seems to happen in
> org.codehaus.groovy.runtime.ConversionHandler#invoke.
> * The issue does not happen when the Consumer-Class is defined in a Groovy
> file.
> * The issue did not occur under JDK 11
--
This message was sent by Atlassian Jira
(v8.20.1#820001)