When I double click on a piece name or copies entry in the Load Multiple Pieces tool, the software crashes. Furthermore, the error window won’t let me send a report. I was able to capture an error log, however. It’s in a txt file.
-Joel Toppen
When I double click on a piece name or copies entry in the Load Multiple Pieces tool, the software crashes. Furthermore, the error window won’t let me send a report. I was able to capture an error log, however. It’s in a txt file.
-Joel Toppen
Here’s the error log:
2026-06-11 17:29:08,752 [3241-main] INFO VASSAL.launch.StartUp - Starting
2026-06-11 17:29:08,758 [3241-main] INFO VASSAL.launch.StartUp - OS Mac OS X 26.3 aarch64
2026-06-11 17:29:08,758 [3241-main] INFO VASSAL.launch.StartUp - Java version 26.0.1
2026-06-11 17:29:08,758 [3241-main] INFO VASSAL.launch.StartUp - Java home /Applications/VASSAL.app/Contents/MacOS/jre
2026-06-11 17:29:08,758 [3241-main] INFO VASSAL.launch.StartUp - VASSAL version 3.7.23
2026-06-11 17:29:09,037 [3241-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2026-06-11 17:29:18,944 [3241-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /Users/joel_m_toppen/Library/CloudStorage/OneDrive-Personal/VASSAL/Space Empires Project/Space Empires 4x (JT) v0.0.5.vmod
2026-06-11 17:29:19,444 [3241-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile.
2026-06-11 17:29:19,445 [3241-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Space Empires 4x
2026-06-11 17:29:19,445 [3241-SwingWorker-pool-1-thread-1] INFO VASSAL.launch.AbstractLaunchAction - JVM maximum heap size: 2048 MB
2026-06-11 17:29:19,448 [3241-SwingWorker-pool-1-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /Applications/VASSAL.app/Contents/MacOS/jre/bin/java -Xms2048M -Xmx2048M -Duser.home=/Users/joel_m_toppen -Duser.dir=/Applications/VASSAL.app -cp Contents/Resources/Java/Vengine.jar -Xdock:name=Space Empires 4x -Xdock:icon=/Applications/VASSAL.app/Contents/Resources/VASSAL.icns VASSAL.launch.Editor --edit – /Users/joel_m_toppen/Library/CloudStorage/OneDrive-Personal/VASSAL/Space Empires Project/Space Empires 4x (JT) v0.0.5.vmod
2026-06-11 17:29:19,676 [3250-main] INFO VASSAL.launch.StartUp - Starting
2026-06-11 17:29:19,681 [3250-main] INFO VASSAL.launch.StartUp - OS Mac OS X 26.3 aarch64
2026-06-11 17:29:19,681 [3250-main] INFO VASSAL.launch.StartUp - Java version 26.0.1
2026-06-11 17:29:19,681 [3250-main] INFO VASSAL.launch.StartUp - Java home /Applications/VASSAL.app/Contents/MacOS/jre
2026-06-11 17:29:19,681 [3250-main] INFO VASSAL.launch.StartUp - VASSAL version 3.7.23
2026-06-11 17:29:19,681 [3250-main] INFO VASSAL.launch.Launcher - Editor
2026-06-11 17:29:21,361 [3250-AWT-EventQueue-0] INFO VASSAL.build.GameModule - Space Empires 4x version 0.0.5
2026-06-11 17:30:33,962 [3250-AWT-EventQueue-0] WARN VASSAL.i18n.BundleHelper - No Translation: Duplicate
2026-06-11 17:32:58,764 [3250-AWT-EventQueue-0] WARN VASSAL.i18n.BundleHelper - No Translation: Duplicate
2026-06-11 17:55:21,968 [3250-AWT-EventQueue-0] WARN VASSAL.i18n.BundleHelper - No Translation: Duplicate
2026-06-11 17:55:46,885 [3250-AWT-EventQueue-0] WARN VASSAL.i18n.BundleHelper - No Translation: Duplicate
2026-06-11 18:00:14,826 [3250-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.lang.NoClassDefFoundError: java/applet/Applet
at org.jdesktop.swingx.JXTable$CellEditorRemover.permanentFocusOwnerChange(JXTable.java:4144)
at org.jdesktop.swingx.JXTable$CellEditorRemover.propertyChange(JXTable.java:4118)
at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:336)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
at java.desktop/java.awt.KeyboardFocusManager.firePropertyChange(KeyboardFocusManager.java:1356)
at java.desktop/java.awt.KeyboardFocusManager.setGlobalPermanentFocusOwner(KeyboardFocusManager.java:698)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:655)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4833)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4784)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:716)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
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.pumpEventsForFilter(EventDispatchThread.java:117)
at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:187)
at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:229)
at java.desktop/java.awt.Dialog.show(Dialog.java:1044)
at java.desktop/java.awt.Component.show(Component.java:1688)
at java.desktop/java.awt.Component.setVisible(Component.java:1635)
at java.desktop/java.awt.Window.setVisible(Window.java:982)
at java.desktop/java.awt.Dialog.setVisible(Dialog.java:982)
at VASSAL.counters.MassPieceLoader.load(MassPieceLoader.java:119)
at VASSAL.configure.ConfigureTree$9.actionPerformed(ConfigureTree.java:1073)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:982)
at java.desktop/com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:163)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:1094)
at java.desktop/javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:587)
at java.desktop/javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:484)
at java.desktop/javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:429)
at java.desktop/javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:347)
at java.desktop/javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(BasicPopupMenuUI.java:886)
at java.desktop/java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2013)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:1905)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:1904)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:1904)
at java.desktop/java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:1861)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4858)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2667)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4784)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:716)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
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: java.lang.ClassNotFoundException: java.applet.Applet
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:502)
… 55 common frames omitted
2026-06-11 18:00:41,350 [3250-AWT-EventQueue-0] ERROR VASSAL.tools.BugDialog -
java.util.concurrent.ExecutionException: java.io.IOException: Bug report failed: 200: {“url”:“https://api.github.com/repos/vassalengine/vassal/issues/14813”}
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:124)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:207)
at java.desktop/javax.swing.SwingWorker.get(SwingWorker.java:622)
at VASSAL.tools.BugDialog$SendRequest.done(BugDialog.java:613)
at java.desktop/javax.swing.SwingWorker$4.run(SwingWorker.java:747)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:837)
at java.desktop/sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at java.desktop/javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:847)
at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:289)
at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:221)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:323)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:714)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
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.pumpEventsForFilter(EventDispatchThread.java:117)
at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:187)
at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:229)
at java.desktop/java.awt.Dialog.show(Dialog.java:1044)
at java.desktop/java.awt.Component.show(Component.java:1688)
at java.desktop/java.awt.Component.setVisible(Component.java:1635)
at java.desktop/java.awt.Window.setVisible(Window.java:982)
at java.desktop/java.awt.Dialog.setVisible(Dialog.java:982)
at VASSAL.tools.BugDialog.setVisible(BugDialog.java:482)
at VASSAL.tools.ErrorDialog.lambda$bug$4(ErrorDialog.java:106)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:323)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:714)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
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.pumpEventsForFilter(EventDispatchThread.java:117)
at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:187)
at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:229)
at java.desktop/java.awt.Dialog.show(Dialog.java:1044)
at java.desktop/java.awt.Component.show(Component.java:1688)
at java.desktop/java.awt.Component.setVisible(Component.java:1635)
at java.desktop/java.awt.Window.setVisible(Window.java:982)
at java.desktop/java.awt.Dialog.setVisible(Dialog.java:982)
at VASSAL.counters.MassPieceLoader.load(MassPieceLoader.java:119)
at VASSAL.configure.ConfigureTree$9.actionPerformed(ConfigureTree.java:1073)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:982)
at java.desktop/com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:163)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.menuDragMouseReleased(BasicMenuItemUI.java:1094)
at java.desktop/javax.swing.JMenuItem.fireMenuDragMouseReleased(JMenuItem.java:587)
at java.desktop/javax.swing.JMenuItem.processMenuDragMouseEvent(JMenuItem.java:484)
at java.desktop/javax.swing.JMenuItem.processMouseEvent(JMenuItem.java:429)
at java.desktop/javax.swing.MenuSelectionManager.processMouseEvent(MenuSelectionManager.java:347)
at java.desktop/javax.swing.plaf.basic.BasicPopupMenuUI$MouseGrabber.eventDispatched(BasicPopupMenuUI.java:886)
at java.desktop/java.awt.Toolkit$SelectiveAWTEventListener.eventDispatched(Toolkit.java:2013)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:1905)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:1904)
at java.desktop/java.awt.Toolkit$ToolkitEventMulticaster.eventDispatched(Toolkit.java:1904)
at java.desktop/java.awt.Toolkit.notifyAWTEventListeners(Toolkit.java:1861)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4858)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2667)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4784)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:716)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
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: java.io.IOException: Bug report failed: 200: {“url”:“https://api.github.com/repos/vassalengine/vassal/issues/14813”}
at VASSAL.tools.BugUtils.sendBugReport(BugUtils.java:56)
at VASSAL.tools.BugDialog$SendRequest.doInBackground(BugDialog.java:599)
at VASSAL.tools.BugDialog$SendRequest.doInBackground(BugDialog.java:585)
at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:303)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:330)
at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:340)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
at java.base/java.lang.Thread.run(Thread.java:1516)
Despite the error, the automatic bug reporting did succeed. The result code is not being interpreted correctly. The error window did send the report.
It seems that the java.applet package has been removed from JDK 26. See So Long and Thanks for All the Applets - Inside.java
The quick fix is to replace the jre folder with Java 25 or older. Vassal version 3.7.21 ships with Java 25.
There’s a PR for fixing the automatic bug reporting, which will appear in 3.7.24.
The explanation for the problem is that GitHub used to return only the HTTP response code 201 on successful issue creation, which is what we checked for to determine success, but recently started returning 200 sometimes. GitHub’s REST API docs continue to say that 201 is the expected code on success and doesn’t list 200 as a possibility.
The original problem is that one of our dependencies, SwingX, appears to load the java.applet.Applet class, which no longer exists as of Java 26, and unfortunately SwingX hasn’t been updated since 2013 and the project was ended and the code deleted (!) in 2017 when java.net was retired.
The wikipedia article notes there are some repos on GitHub which are copies of the final state of the code, and this one looks like a fork which has been modernized slightly, so possibly we can switch to that.
This PR switches us to use the swingx fork which is compiled to be compatible with Java 26… but it doesn’t build—maven fails to pull the JAR. I don’t understand why.
The errorLog file is a plain text file. It may not end in .txt, but the contens is never the less plain text. Note that one cannot attach plain text files to a post - for security reasons. Instead, you should paste the relevant parts of the errorLog file between ``` so that it comes out more readable in the message.
The above fails because java.applet.Applet isn’t found. As far as I can tell, there’s no where in the Vassal code that that class is is referenced.
As @uckleman points out, the problem arises in org.jdesktop.swingx.JXTable, which uses java.applet.Applet, which has disappeared as @rlament points out.
Since org.desktop.swingx is unlikely to be updated, and Vassal uses that library in crucial places, perhaps the easiest thing is to provide a java.applet.Applet dummy class in Vassal
package java.applet;
import java.awt.Panel;
class Applet extends Panel {
}
for JDK’s >= 26.
Most of the time, org.jdesktop.swingx simply tests if a passed java.awt.Component is a java.applet.Applet object, but does not use the Applet specific API.
Interestingly enough, the java.applet.Applet is referenced by org.jdesktop.swingx.JXTreeTable, via base class org.jdesktop.swingx.JTable, which is used in the module manager, but that does not trigger the exception with OpenJDK 27 and swingx 1.6.2 on Debian GNU/Linux. I haven’t tried to trigger a bug report though.
Yours,
Christian
I’m not sure the class loader will allow loading a class in the java.* hierarchy which is not part of the JDK.
Just tried the following
$ java --version
openjdk 27-ea 2026-09-15
OpenJDK Runtime Environment (build 27-ea+24-2-Debian)
OpenJDK 64-Bit Server VM (build 27-ea+24-2-Debian, mixed mode, sharing)
$ mkdir -p java/applet
$ echo "package java.applet; public class Applet {}" > java/applet/Applet.java
$ echo "import java.applet.Applet; public class Foo { public static void main(String[] args) { System.out.println(\"Hello, World\"); } }" > Foo.java
$ javac Foo.java java/applet/Applet.java
$ java Foo
Hello, World
So that at least seems to work. Perhaps the monkey patch with a dummy java.applet.Applet will work.
Yours,
Christian
The swingx fork I was trying to use is in a GitHub package repository, which apparently requires authentication to pull from it. Instead, I’ve copied 2.0.1 of swingx into our own Maven repo, and that seems to work.
@Alexander331bc Please try one of the VASSAL-3.7.24-SNAPSHOT-1459dd5-swingx-update test builds and attempt to trigger the same error you had originally, and let us know what happens.
(BTW, I’ve also fixed the builds search query, so it works for filtering builds now.)
I asked the maintainer of the swingx fork if he’d put it on Maven Central:
He said he’s looking into it.
The maintainer of the swingx fork published it to Maven Central, and we’ve merged a PR to use that. This doesn’t fix the original problem you saw, but it will make bug reporting work properly again when 3.7.24 is released.
Expect 3.7.24 in a few days.