xubuntu 18.04 & module load error fix

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 :slight_smile:

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

Thanks for that good info about java in ubuntu linux!
In my case, since VASSAL is the only java application I ever use, openjdk-java-8 is the only java I have installed.