[
https://issues.apache.org/jira/browse/GROOVY-11112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17737076#comment-17737076
]
Paul King commented on GROOVY-11112:
------------------------------------
I can reproduce in 3.0.15 with JDK17 but your test works fine in 3.0.16, 3.0.17
and the upcoming 3.0.18.
> Calling SwingWorker publish() method aborts with
> groovy.lang.MissingMethodException
> -----------------------------------------------------------------------------------
>
> Key: GROOVY-11112
> URL: https://issues.apache.org/jira/browse/GROOVY-11112
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 3.0.15
> Reporter: Dominik S.
> Priority: Major
>
> Hello,
>
> with Groovy 3.0.15 and Java *17* I get the following exception when I call a
> SwingWorker publish() method
>
> {code:java}
> groovy.lang.MissingMethodException: No signature of method:
> TestWorker2.publish() is applicable for argument types: (Integer) values: [0]
> java.util.concurrent.ExecutionException: groovy.lang.MissingMethodException:
> No signature of method: TestWorker2.publish() is applicable for argument
> types: (Integer) values: [0]
> at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
> at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
> at java.desktop/javax.swing.SwingWorker.get(SwingWorker.java:613)
> at java_util_concurrent_Future$get.callCurrent(Unknown Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:176)
> at TestWorker2.done(TestWorker2.groovy:32)
> at java.desktop/javax.swing.SwingWorker$5.run(SwingWorker.java:750)
> at
> java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:848)
> at
> java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
> at
> java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:858)
> at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
> at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
> at
> java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
> at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
> at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
> at
> java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
> at
> java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
> at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
> at
> java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
> at
> java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
> at
> java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
> Caused by: groovy.lang.MissingMethodException: No signature of method:
> publish() is applicable for argument types: (Integer) values: [0]
> at
> org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:72)
> at
> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:82)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185)
> at TestWorker2.doInBackground(TestWorker2.groovy:16)
> at TestWorker2.doInBackground(TestWorker2.groovy)
> at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
> at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
> at java.base/java.lang.Thread.run(Thread.java:833) {code}
>
>
> The code example is the following:
> TestWorker2Test.groovy
>
> {code:java}
> import java.awt.EventQueue
> class TestWorker2Test {
>
> static void main(String[] args) {
>
> EventQueue.invokeLater(new Runnable() {
> public void run() {
> try {
> println "TestWorkerTest2"
> TestWorker2 tw2 = new TestWorker2()
> tw2.execute()
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> })
>
> }
> }
> {code}
>
> TestWorker2.groovy
> {code:java}
> import javax.swing.SwingWorker
> class TestWorker2 extends SwingWorker<Void, Integer> {
>
> @Override
> protected Void doInBackground() throws Exception {
>
> for(int i=0; i<10; i++) {
> publish(i)
> }
> return null
> }
>
> @Override
> protected void process(List<Integer> chunks) {
> // Get Info
> for (Integer number : chunks) {
> println"Execute 'process chunks' in TestWorker 2!
> Number:$number"
> }
> }
>
> @Override
> protected void done() {
> try {
> get()
> println "Background thread has been processed."
> } catch (Exception ex) {
> println "Error!"
> println ex.getMessage()
> ex.printStackTrace()
> }
> }
>
> } {code}
> When I run the above code with Groovy 3.0.15 and Java *11* everything works
> fine, only after switching to Java *17* I get the above exception.
>
> What has changed with Java 17 and how can I solve the problem? Thanks in
> advance!
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)