VASSAL installation on Linux Mint

I’m having trouble installing VASSAL for the first time. Comments in the forum about Java incompatibilities acknowledged, but they are several years old. Surely, there is a fix by now. My Java version is newer than the ones mentioned in the forum.

Dell Latitude E6430
Operating System - Linux Mint 19 Cinnamon
Cinnimon Version – 3.8.8 (64 bit)
Linux Kernel – 4.15.0-20-generic
Processor - Intel© Core™ i5-3340M CPU @ 2.70GHz × 1
Memory – 7.7 GiB
Graphics Card - Intel Corporation 3rd Gen Core processor Graphics Controller
VASSAL Version - 3.2.17
Java Version - openjdk version “10.0.1” 2018-04-17
VASSAL Module – vasl-6.4.4.vmod

First I unpacked VASSAL-3.2.17-linux.tar.bz2

In Terminal I ran: ~/VASSAL-3.2.17$ bash ./VASSAL.sh

This is the error message:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by VASSAL.tools.image.ImageIOImageLoader (file:/home/dell/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

The VASSAL window opened on my screen, so I decided to proceed. From the File menu, I attempted to open vasl-6.4.4.vmod. An error message returned:

“Eeek! A bug! VASSAL had an internal error.

2019-07-21 11:05:42,699 [0-main] INFO VASSAL.launch.StartUp - Starting
2019-07-21 11:05:42,703 [0-main] INFO VASSAL.launch.StartUp - OS Linux 4.15.0-20-generic
2019-07-21 11:05:42,703 [0-main] INFO VASSAL.launch.StartUp - Java version 10.0.1
2019-07-21 11:05:42,703 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2019-07-21 11:05:43,204 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2019-07-21 11:11:21,066 [0-SwingWorker-pool-1047770229-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /home/dell/Downloads/vasl-6.4.4.vmod
2019-07-21 11:11:21,838 [0-SwingWorker-pool-1047770229-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile.
2019-07-21 11:11:21,845 [0-SwingWorker-pool-1047770229-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module VASL
2019-07-21 11:11:21,850 [0-SwingWorker-pool-1047770229-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xms256M -Xmx512M -DVASSAL.id=1 -DVASSAL.port=34101 -Duser.home=/home/dell -Duser.dir=/home/dell/VASSAL-3.2.17 -cp /home/dell/VASSAL-3.2.17/lib/Vengine.jar VASSAL.launch.Player --load – /home/dell/Downloads/vasl-6.4.4.vmod
2019-07-21 11:11:22,729 [1-main] INFO VASSAL.launch.StartUp - Starting
2019-07-21 11:11:22,733 [1-main] INFO VASSAL.launch.StartUp - OS Linux 4.15.0-20-generic
2019-07-21 11:11:22,733 [1-main] INFO VASSAL.launch.StartUp - Java version 10.0.1
2019-07-21 11:11:22,733 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2019-07-21 11:11:22,733 [1-main] INFO VASSAL.launch.Launcher - Player
2019-07-21 11:11:23,344 [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/dell/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
2019-07-21 11:11:23,645 [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]

Much more in the log file. If you need the entire file, I have saved it, and will be glad to send it.

Try openjdk-8-jre - VASSAL works fine with this version of java

I don’t know if you got it resolved, but as Mint is a debian version, so lets see if I can guide you through this:
Multiple versions of Java on your OS installation, so first check if you have java8 installed, open a terminal and run:

$ sudo update-alternatives --config java

[sudo] password for :
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 1111 auto mode
    1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 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:

So my version have both Java-11 and Java-8 installed, so this makes it easier. You can now change your default version of java by telling which one. But as java-8 is an old version this might not be preferable. Better choice is to to edit the VASSAL.sh file in the VASSAL folder (or the script you use to start VASSAL with). Just open it with any text editor and change:

java -Duser.dir="$INSTALL_DIR" -classpath “$INSTALL_DIR”/lib/Vengine.jar VASSAL.launch.ModuleManager “$@”

to

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Duser.dir="$INSTALL_DIR" -classpath “$INSTALL_DIR”/lib/Vengine.jar VASSAL.launch.ModuleManager “$@”

Note: This is the absolute path that update-alternatives gave me, so you will have to copy and paste the path that you have on your machine.

Now what do you do if you don’t have java-8 installed? Well, install it. It is usually still part of the APT-package cache, so try:

sudo apt install openjdk-8-jre

You the run-time environment should be enough, so you don’t need the development-kit. Now if you run:

sudo update-alternatives --config java

You should see the java-8 version, now you should be able to switch version, or update your VASSAL.sh file.

I hope this helps.

I’VE GOT IT WORKING!! WOOHOO!! Thank you.

Kchrister, you got me there! Thank you for the step by step.

I had some broken dependencies that had to be fixed. Your step by step alerted me to that. I fixed them and now I am Running VASSAL! :smiley:

Let’s mark this one RESOLVED

Hi,

I realize this discussion has moved on but I’d like to re-open it.

I’m testing Pop_OS in an attempt to avoid Win10 on my old desktop. (It is running on a live USB)

I believe i have followed all the steps in this thread but when i hit the VASSAL.sh nothing happens. I have attached a couple screenshots to show what i have.

Any help would be appreciated, thanks!

Which version of Vassal is this?

Vassal 3.2 needs Java 8.
Vassal 3.3 needs Java 11+.

Vassal 3.3 should run out of the box:

$ cd apps/VASSAL-3.3.2/
~/apps/VASSAL-3.3.2$ java -version
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment Zulu14.29+23-CA (build 14.0.2+12)
OpenJDK 64-Bit Server VM Zulu14.29+23-CA (build 14.0.2+12, mixed mode, sharing)
~/apps/VASSAL-3.3.2$ ./VASSAL.sh

Vassal 3.2 can be made to run if you have a JDK 8 installed but needs extra steps if your default Java is 11+, and why bother, just run 3.3.

Your first screenshot shows the 3.3 VASSAL.sh script where you replaced the default java with an absolute path to Java 8, this will not run, 3.3 needs Java 11+. Just use the default start script, don’t need to change anything.

Thanks, you are correct, it is VASSAL 3.3.2. Sadly it didn’t run out of the box hence my path to modifications.

i have re-enabled the default.

Thus spake spetras73 via messages:

I believe i have followed all the steps in this thread but when i hit
the VASSAL.sh nothing happens. I have attached a couple screenshots to

How are you running VASSAL.sh? Try running it from the terminal and
posting the output.


J.

This is the relevant part of my start script for Vassal 3.2:

JAVA_OPENJDK=/usr/lib/jvm/java-8-openjdk-amd64
JAVA_GRAALVM=/usr/lib/jvm/graalvm-java8
JAVA_HOME=$JAVA_GRAALVM

# Launch VASSSAL
$JAVA_HOME/bin/java -Duser.dir="$INSTALL_DIR" -classpath "$INSTALL_DIR"/lib/Vengine.jar VASSAL.launch.ModuleManager "$@"

But you only need to reference one Java, I just like to try different ones. You could do sth like this:

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

# Launch VASSSAL
$JAVA_HOME/bin/java -Duser.dir="$INSTALL_DIR" -classpath "$INSTALL_DIR"/lib/Vengine.jar VASSAL.launch.ModuleManager "$@"

i have been trying to run it by double-click or right click (windows habit I know!). when i right-click the associated app is ‘OpenJDK Java 11 Runtime’

I will try via terminal.

I think it is a path issue. Where should the VASSAL-3.3.2 file be?

Success!

Launching from the terminal worked. Got VASSAL up and even opened a module (Here Come the Rebels II.)

I think this was too much for my live USB session though because the whole session locked up at that point and I bailed back to Windows.

Experiment worked though, thanks for the help.

Try Virtualbox with a linux installed, should be a bit more stable than from USB. Can use a prebuilt image like this one linuxvmimages.com/images/ubuntu-2004/.

Thanks again!