Vassal on Mac does not open (anymore)

For seemingly no reason, my Vassal stopped working the other day. The icon just bounces and stops. No updates happened other than upgrading the version of Vassal. I downgraded back but it still didn’t work.

Mac Catalina 10.15.7
Latest Java 8.91
Vassal - latest or the one before that.

Error log:
2021-06-02 18:07:38,220 [0-main] INFO VASSAL.launch.StartUp - Starting
2021-06-02 18:07:38,223 [0-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.15.7
2021-06-02 18:07:38,223 [0-main] INFO VASSAL.launch.StartUp - Java version 1.8.0_271
2021-06-02 18:07:38,223 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.17
2021-06-02 18:07:39,687 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2021-06-02 18:07:54,251 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManagerWindow - Module /Users/thomastownsend/Documents/games/Source_of_the_Nile_v1.01.vmod not found - Removed.
2021-06-02 18:09:06,654 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManagerWindow - Exiting

The aforementioned vmod file had been moved to a new location. I moved it back to where the errorlog thinks says it should be, to no avail.

I think it might be that my old mac is now too old. Maybe a good excuse to get a newer one?

Thanks,
TomT

That is the WRONG errorlog. Here is the correct one:

2024-06-12 13:01:49,667 [708-main] INFO VASSAL.launch.StartUp - Starting
2024-06-12 13:01:49,690 [708-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.15.7 x86_64
2024-06-12 13:01:49,690 [708-main] INFO VASSAL.launch.StartUp - Java version 22.0.1
2024-06-12 13:01:49,691 [708-main] INFO VASSAL.launch.StartUp - Java home /Applications/VASSAL.app/Contents/MacOS/jre
2024-06-12 13:01:49,691 [708-main] INFO VASSAL.launch.StartUp - VASSAL version 3.7.12
2024-06-12 13:01:50,179 [708-main] ERROR VASSAL.tools.ErrorDialog -
java.lang.UnsatisfiedLinkError: /Applications/VASSAL.app/Contents/MacOS/jre/lib/libawt.dylib: dlopen(/Applications/VASSAL.app/Contents/MacOS/jre/lib/libawt.dylib, 1): Library not loaded: /System/Library/Frameworks/JavaRuntimeSupport.framework/Versions/A/JavaRuntimeSupport
Referenced from: /Applications/VASSAL.app/Contents/MacOS/jre/lib/libawt.dylib
Reason: image not found
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139)
at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:259)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:249)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2408)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:916)
at java.base/java.lang.System.loadLibrary(System.java:2068)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:1384)
at java.desktop/java.awt.Toolkit$2.run(Toolkit.java:1382)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
at java.desktop/java.awt.Toolkit.loadLibraries(Toolkit.java:1381)
at java.desktop/java.awt.Toolkit.initStatic(Toolkit.java:1419)
at java.desktop/java.awt.Toolkit.(Toolkit.java:1393)
at VASSAL.launch.StartUp.initUIProperties(StartUp.java:97)
at VASSAL.launch.StartUp.initSystemProperties(StartUp.java:49)
at VASSAL.launch.ModuleManagerMacOSXStartUp.initSystemProperties(ModuleManagerMacOSXStartUp.java:26)
at VASSAL.launch.ModuleManager.(ModuleManager.java:288)
at VASSAL.launch.ModuleManager.main(ModuleManager.java:204)

The problem you’re having is the same as on this thread:

The short summary is that from 3.7.10 onwards, the version of Java we bundle in our Mac release package won’t work on very old versions of MacOS.

You can still run the “other” package of Vassal on your version of MacOS, and we’d very much like to work out exactly how, but we need somebody with such a Mac to help us work through it or it won’t happen. Follow that thread to the end, working through the steps and report back there what you find.

Thanks. Downloading the new (old) Java and new (old) Vassal did it!

But I still want a new Mac… :wink:

TomT

I’m glad you got it working, but would you describe what steps you took? This is what we’re trying to work out in the other thread.

About halfway down the post referred to above as “Can’t upgrade VASSAL on Mac OS”, there are links to download old versions of Java and Vassal. I installed both of these.

Then, to run the new/old version of Vassal, I shelled out and changed directory to the new Vassal install folder, then sudo’d the shell file there:

sudo ./VASSAL.sh

and entered my password.

The app runs. Its icon is different - it’s a little thumbs-up elf person. The app continues to run in the shell. To exit, I ctrl-c when finished.

TomT

Using sudo means you’re running Vassal as root. It’s not advisable to run programs with root permissions when you don’t need to. You really should run with just ./VASSAL.sh.

That’s the Java mascot. We’re not setting an icon in VASSAL.sh.

That’s not a good idea—it could prevent your preferences from being saved properly. Better is to exit using File > Quit or the X window decoration on the Module Manager window.

When I don’t run as root, I get this error:

Exception: java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "main

It would be worth determining why.

Is there more output than that? (There should be.) Please post it here.

No more output than the error message. Here’s a screen shot.

Let’s try to establish where Java is and what version you’re running.

What is the output of

which java

when run in your terminal?

: which java
/usr/bin/java

: java --version
java 22.0.1 2024-04-16
Java™ SE Runtime Environment (build 22.0.1+8-16)
Java HotSpot™ 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)

Your immediate problem is that you have Java 22, which won’t work properly on MacOS 10.15.7. It’s hard to find any clear version requirements at this point, but most likely you need Java 17 or Java 11.

Try installing Java 17 and running Vassal with that instead. Does that work?

(BTW, you can copy terminal output into posts as text and put triple backticks ````` before and after it make it easier to read.)

Nope. Vassal won’t run with 17.

All I did to run 17 was change my JAVA_HOME variable in my .bash_login file and exported it (and the new PATH).

503_Cicero_~: java --version
java 17.0.10 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)

Ok. Next, try Java 11.

No joy.

Throughout the 22 to 17 to 11 experience, the VASSAL.sh version has worked though.

Would you tell me exactly which version of Java 11 you tried (maybe show me the output of java --version for it?) and show me the output of

/path/to/java -Duser.dir=. -classpath lib/Vengine.jar VASSAL.launch.ModuleManager

run from Vassal’s install directory, with /path/to/java filled in with whatever the path is to your Java 11 executable?

I don’t follow what you mean by this.

‘’’
499_Cicero_~: java --version
java 11.0.22 2024-01-16 LTS
Java™ SE Runtime Environment 18.9 (build 11.0.22+9-LTS-219)
Java HotSpot™ 64-Bit Server VM 18.9 (build 11.0.22+9-LTS-219, mixed mode)
‘’’
During the period of trying Java versions 17 and 11, the special version of Java and Vassal that I got through the links above has functioned correctly.

Would you tell me exactly which versions those are? I’m having trouble establishing what it is that is working for you.

This works for me:

JavaForOSX.dmg - 21.0.3+9 Temurin
VASSAL-3.7.12-other.zip

Thanks for all the help - I really appreciate it.
Tom

1 Like