[ 
https://issues.apache.org/jira/browse/GROOVY-11112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17737680#comment-17737680
 ] 

Dominik S. commented on GROOVY-11112:
-------------------------------------

Thanks for your assistance! With Groovy 3.0.17 the code works fine!

I looked at the release notes of Groovy 3.0.16 and saw that it has the same 
error pattern as described in issue 
https://issues.apache.org/jira/browse/GROOVY-10070

 

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

Reply via email to