Running Vassal 3.2.17 under xubuntu 18.04 produced this error when trying to load a module
2018-09-22 13:28:03,809 [0-main] INFO VASSAL.launch.StartUp - Starting
2018-09-22 13:28:03,811 [0-main] INFO VASSAL.launch.StartUp - OS Linux 4.15.0-34-generic
2018-09-22 13:28:03,812 [0-main] INFO VASSAL.launch.StartUp - Java version 10.0.2
2018-09-22 13:28:03,812 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2018-09-22 13:28:04,106 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2018-09-22 13:28:21,508 [0-SwingWorker-pool-1770807808-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /home/suhtek/Downloads/mods/Ambush_v1.1.vmod
2018-09-22 13:28:21,633 [0-SwingWorker-pool-1770807808-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile.
2018-09-22 13:28:21,634 [0-SwingWorker-pool-1770807808-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Ambush
2018-09-22 13:28:21,638 [0-SwingWorker-pool-1770807808-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xms256M -Xmx512M -DVASSAL.id=1 -DVASSAL.port=46819 -Duser.home=/home/suhtek -Duser.dir=/media/suhtek/STEAMLIB/SYSTEM/VASSAL-3.2.17 -cp /media/suhtek/STEAMLIB/SYSTEM/VASSAL-3.2.17/lib/Vengine.jar VASSAL.launch.Player --load -- /home/suhtek/Downloads/mods/Ambush_v1.1.vmod
2018-09-22 13:28:22,643 [1-main] INFO VASSAL.launch.StartUp - Starting
2018-09-22 13:28:22,648 [1-main] INFO VASSAL.launch.StartUp - OS Linux 4.15.0-34-generic
2018-09-22 13:28:22,648 [1-main] INFO VASSAL.launch.StartUp - Java version 10.0.2
2018-09-22 13:28:22,648 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2018-09-22 13:28:22,649 [1-main] INFO VASSAL.launch.Launcher - Player
2018-09-22 13:28:23,137 [0-ProcessLauncher-2] WARN VASSAL.tools.logging.LoggedOutputStream - WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by VASSAL.tools.image.ImageIOImageLoader (file:/media/suhtek/STEAMLIB/SYSTEM/VASSAL-3.2.17/lib/Vengine.jar) to field sun.java2d.cmm.ProfileDeferralMgr.deferring
WARNING: Please consider reporting this to the maintainers of VASSAL.tools.image.ImageIOImageLoader
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2018-09-22 13:28:23,516 [1-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.lang.NoClassDefFoundError: org/w3c/dom/ls/DocumentLS
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009) ~[na:na]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009) ~[na:na]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:801) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:699) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:622) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ~[na:na]
at org.apache.xerces.util.ObjectFactory.findProviderClass(Unknown Source) ~[xercesImpl.jar:na]
at org.apache.xerces.parsers.AbstractDOMParser.setDocumentClassName(Unknown Source) ~[xercesImpl.jar:na]
at org.apache.xerces.parsers.AbstractDOMParser.reset(Unknown Source) ~[xercesImpl.jar:na]
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) ~[xercesImpl.jar:na]
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) ~[xercesImpl.jar:na]
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) ~[xercesImpl.jar:na]
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122) ~[na:na]
at VASSAL.build.Builder.createDocument(Builder.java:160) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.build(BasicModule.java:110) ~[Vengine.jar:na]
at VASSAL.build.GameModule.init(GameModule.java:855) ~[V
OpenJdk 11 is the current default for xubuntu bionic so I installed OpenJdk 8 via synaptic.
running the following code brings up a cmdline menu to change default java implementation:
sudo update-alternatives --config java
should produce output somewhat like:
[code]There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
- 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press to keep the current choice[*], or type selection number:[/code]
entering <2> sets to java 8.
to test if that worked enter:
java -version
which outputs:
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Vassal now works
a quicker method is to run the following code before launching vassal
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
this will set Java to Java 8.
note: your path may vary, the previous --config command will output the actual paths needed to invoke these codes.
after closing vassal execute the following to reset java back to java 11
sudo update-alternatives --set java /usr/lib/jvm/java-11-openjdk-amd64/bin/java