Dominik S. created GROOVY-11112:
-----------------------------------

             Summary: 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.


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)

Reply via email to