VASSAL ASL Incompatabilities

Hi

I had installed VASSAL and VASL on two previous Windows computers and really not had a problem. I just got a new machine and I’m trying desperately to get it set up so I can resume playing. However I am running into incompatibilty issue. I downloaded the 6.5 version of VASL. Then I download the 3.3.1 latest versioin of the VASSAL engine. When I try to open the VASL module it tells me this module is incompatible, go get a later version. There isn’t a later VASL module. Alternatively it tells me to try the 3.1.20 version of the engine. I found 3.1.2 in an archive and tried downloading this. But the required JAva download fails. Grrrrrrrrrrr

Thus spake TimOsborneEcuador:

Hi

I had installed VASSAL and VASL on two previous Windows computers and
really not had a problem. I just got a new machine and I’m trying
desperately to get it set up so I can resume playing. However I am
running into incompatibilty issue. I downloaded the 6.5 version of VASL.
Then I download the 3.3.1 latest versioin of the VASSAL engine. When I
try to open the VASL module it tells me this module is incompatible, go
get a later version.

Would you show me a screenshot of that message?

There isn’t a later VASL module. Alternatively it
tells me to try the 3.1.20 version of the engine.

And also this message?

I found 3.1.2 in an archive and tried downloading this. But the required
JAva download fails.

3.1.2 is from 2009. From where did you download that?

One of the reasons for releasing 3.3 was to fix the problem with the Java
downloader (which occurred because of a change at java.com). If you’re
trying to install 3.2.17—which is the last release before 3.3.0, and the
release you want for using VASL 6.5.0—then you need to install Java first
so that VASSAL’s installer sees you already have Java and doesn’t try to
download it.


J.

I use ubuntu 20.04 Open Java 8 and VASL 3.2.17 everything worked fine
Downloaded VASSAL 3.3.1 did not work with Open Java 8
installed open java 11 when trying to open VASL get this message:
“The verison of VASL you are trying to load is incompatible with VASSAL 3.3.1. Please check www.advancedsquadleader.net for a newer version of VASL, or load this version of VASL with VASSAL 3.1.20.”
opened VASSAL 3.2.17 loaded VASL 3.1.17 and get this:
VASSAL sufered and internal error…
And the log is:

2020-07-01 01:09:16,131 [0-main] INFO VASSAL.launch.StartUp - Starting
2020-07-01 01:09:16,133 [0-main] INFO VASSAL.launch.StartUp - OS Linux 5.4.0-40-generic
2020-07-01 01:09:16,134 [0-main] INFO VASSAL.launch.StartUp - Java version 11.0.7
2020-07-01 01:09:16,134 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2020-07-01 01:09:16,459 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2020-07-01 01:09:21,911 [0-SwingWorker-pool-139628257-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /home/pecete/Vassal Modulos/VASL/vasl-6.5.0.vmod
2020-07-01 01:09:22,414 [0-SwingWorker-pool-139628257-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile.
2020-07-01 01:09:22,419 [0-SwingWorker-pool-139628257-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module VASL
2020-07-01 01:09:22,424 [0-SwingWorker-pool-139628257-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xms256M -Xmx512M -DVASSAL.id=1 -DVASSAL.port=32869 -Duser.home=/home/pecete -Duser.dir=/home/pecete/VASSAL-3.2.17 -cp /home/pecete/VASSAL-3.2.17/lib/Vengine.jar VASSAL.launch.Player --load – /home/pecete/Vassal Modulos/VASL/vasl-6.5.0.vmod
2020-07-01 01:09:23,070 [1-main] INFO VASSAL.launch.StartUp - Starting
2020-07-01 01:09:23,072 [1-main] INFO VASSAL.launch.StartUp - OS Linux 5.4.0-40-generic
2020-07-01 01:09:23,072 [1-main] INFO VASSAL.launch.StartUp - Java version 11.0.7
2020-07-01 01:09:23,072 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2020-07-01 01:09:23,073 [1-main] INFO VASSAL.launch.Launcher - Player
2020-07-01 01:09:23,229 [0-ProcessLauncher-2] WARN VASSAL.tools.logging.LoggedOutputStream - Gtk-Message: 01:09:23.229: Failed to load module “canberra-gtk-module”
2020-07-01 01:09:23,509 [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:/home/pecete/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
2020-07-01 01:09:23,762 [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:1017) ~[na:na]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[na:na]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621) ~[na:na]
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[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) ~[Vengine.jar:na]
at VASSAL.launch.Player.launch(Player.java:83) ~[Vengine.jar:na]
at VASSAL.launch.Launcher$1.run(Launcher.java:149) ~[Vengine.jar:na]
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313) ~[na:na]
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) ~[na:na]
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) ~[na:na]
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) ~[na:na]
at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) ~[na:na]
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) ~[na:na]
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[na:na]
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[na:na]
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) ~[na:na]
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) ~[na:na]
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) ~[na:na]
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) ~[na:na]
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ls.DocumentLS
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
… 43 common frames omitted

If you want to go back to VASSAL 3.2.17, you also need to go back to Java 8.

Thus spake pecete:

I use ubuntu 20.04 Open Java 8 and VASL 3.2.17 everything worked fine
Downloaded VASSAL 3.3.1 did not work with Open Java 8

Yes. VASSAL 3.3 requires Java 11 or later.

installed open java 11 when trying to open VASL get this message:
“The verison of VASL you are trying to load is incompatible with VASSAL
3.3.1. Please check www.advancedsquadleader.net[1] for a newer version
of VASL, or load this version of VASL with VASSAL 3.1.20.”

That error message is incorrect in that it gives the wrong version of
VASSAL to use for the most recent release of VASL. (It should be 3.2.17.)
This is already fixed in our development version and the corrected message
will go out in 3.3.2.

There isn’t yet a release of VASL which is compatible with VASSAL 3.3.
The VASL devs are working on one (with my help) and the next version
will be 3.3-compatible.

opened VASSAL 3.2.17 loaded VASL 3.1.17 and get this:
VASSAL sufered and internal error…

This is because you’re now trying to run 3.2.17 with Java 11, and
3.2.17 cannot run with anything later than Java 8.

There was no other way around this. The whole purpose of VASSAL 3.3
was to update past Java 8, and there are changes between Java 8 and
Java 9 that make it impossible to keep custom code like VASL has
working unchanged—but those same changes make the custom code no
longer backwards compatible. It won’t be very long before there’s
a new release of VASL which resolves all of this. Please bear with
us in the meantime.


J.

Thanks purged openjava 11 reinstaled 8 and all works again

Don’t need to purge, you can install as many JVMs as you want, one of them will be the default but you can choose which of them is used for every single application.

I am on Ubuntu 20.04 as well, you can install several Javas and select the default with “sudo update-alternatives --config java”.

And if your default is e.g. Java 14 you can still use another installed Java for Vassal by adjusting the VASSAL.sh like this:

$ cd apps/VASSAL-3.2.17
$ ls *.sh
VASSAL-oldjdk.sh  VASSAL.sh
$ diff VASSAL-oldjdk.sh VASSAL.sh 
10,13d9
< JAVA_OPENJDK=/usr/lib/jvm/java-8-openjdk-amd64
< JAVA_GRAALVM=/usr/lib/jvm/graalvm-java8
< JAVA_HOME=$JAVA_GRAALVM
< 
15c11
< $JAVA_HOME/bin/java -Duser.dir="$INSTALL_DIR" -classpath "$INSTALL_DIR"/lib/Vengine.jar VASSAL.launch.ModuleManager "$@"
---
> java -Duser.dir="$INSTALL_DIR" -classpath "$INSTALL_DIR"/lib/Vengine.jar VASSAL.launch.ModuleManager "$@"

I. e. replace “java” with “/usr/lib/jvm/java-8-openjdk-amd64”.

Similarly for other Vassal and Java versions.