You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Dominik S. (Jira)" <ji...@apache.org> on 2023/06/26 07:17:00 UTC
[jira] [Created] (GROOVY-11112) Calling SwingWorker publish() method aborts with groovy.lang.MissingMethodException
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)