From 3.6.0 beta 3 Mac OS refuses to start VASSAL

Until 3.6.0 beta 2 my machine was running VASSAL w/o problems, from 3.6.0. beta 3 and on, it refuses to start VASSAL on double click on the programm symbol.

My configuration:
Mac Pro late 2013, 3,7 Ghz Quad Core Intel Xenon E5, 64 GB RAM, Mac OS X 10.9.5 (13F34). Java for OS X 2013-005.

Any help much appreciated.

Thx.

Can you update MacOS to at least 10.14? That’s the minimum stated requirement for the Java 17 build we bundle we’ve bundled with Vassal 3.6 since 3.6.0-beta3. Prior to 3.6.0-beta3, we were bundling Java 16, but that build also claims to require MacOS 10.14 or later. Whether either of those are actually hard requirements I don’t know.

Please post what’s in your error log after you try to start Vassal.

Unfortunately, no update to 10.14 is possible. My Adobe Creative Suite would refuse to work from OS X 10.10 and higher, which means having to “take advantage” of Adobe’s monthly fee modell.

The starting attempt of 3.6.0-beta3 or higher generates no error log. Stragely enough starting 3.6.0-beta2, which run smoothly, does generate one:

2021-12-16 17:27:42,251 [20637-main] INFO VASSAL.launch.StartUp - Starting
2021-12-16 17:27:42,263 [20637-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.9.5 x86_64
2021-12-16 17:27:42,263 [20637-main] INFO VASSAL.launch.StartUp - Java version 16.0.2
2021-12-16 17:27:42,263 [20637-main] INFO VASSAL.launch.StartUp - Java home /Applications/VASSAL3.6.0-2.app/Contents/MacOS/jre
2021-12-16 17:27:42,263 [20637-main] INFO VASSAL.launch.StartUp - VASSAL version 3.6.0-beta2
2021-12-16 17:27:42,539 [20637-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager

Thanks for caring

Please try 3.6.2. Either that will work for you and the problem will be solved, or we can start troubleshooting from the current version.

Assuming that 3.6.2 has the same problem, once you’ve tried it the next step will be to see if we can launch the bundled Java manually.

What does /Applications/VASSAL.app/Contents/MacOS/jre/java --version print in your terminal when you run it? (Note that you may need to adjust the VASSAL.app part of this path to wherever you’ve installed 3.6.2.)

3.6.2: no start, no error log.

There seems to be no java in my …/VASSAL.app/Contents/MacOS/jre. See screenshot.

I’m sorry, I got the path wrong. It should be /Applications/VASSAL.app/Contents/MacOS/jre/bin/java --version that you run.

It prints

dyld: Registered code signature for /Applications/VASSAL3.6.0-3.app/Contents/MacOS/jre/bin/…/lib/libjli.dylib
dyld: Registered code signature for /Applications/VASSAL3.6.0-3.app/Contents/MacOS/jre/lib/server/libjvm.dylib
Error: dl failure on line 560
Error: failed /Applications/VASSAL3.6.0-3.app/Contents/MacOS/jre/lib/server/libjvm.dylib, because dlopen(/Applications/VASSAL3.6.0-3.app/Contents/MacOS/jre/lib/server/libjvm.dylib, 10): Symbol not found: _clock_gettime
Referenced from: /Applications/VASSAL3.6.0-3.app/Contents/MacOS/jre/lib/server/libjvm.dylib
Expected in: /usr/lib/libSystem.B.dylib
in /Applications/VASSAL3.6.0-3.app/Contents/MacOS/jre/lib/server/libjvm.dylib
Matthias-Hardels-Mac-Dose:~ harmat$

clock_gettime() is a symbol unavailable before MacOS 10.12, so the Java we’ve bundled since 3.6.0-beta3 won’t run on anything earlier.

If you cannot upgrade to MacOS 10.12 or later, your options are:

  • Don’t go beyond Vassal 3.6.0-beta2 on this machine. (In that case, I would not go beyond 3.5.8, as there have been 150+ changes, many of them bug fixes, that you would be missing in 3.6.0-beta.)

  • Install the “other” bundle of Vassal 3.6.2 along with a version of Java 11+ that works on your machine.

(This makes me wonder if you could upgrade to a newer version of MacOS and run Adobe CS in a virtual machine or Docker container successfully.)

If you decide to use the “other” bundle what I recommend trying is:

  1. Make a directory for Vassal.
  2. Unpack the “other” bundle into that directory.
  3. Download Java 16. (Note that this build of Java 16 also says it requires MacOS 10.14+, but you say you successfully ran such a build, so apparently it’s not a hard requirement.)
  4. Unpack Java into the same directory.
  5. You should now have a directory containing VASSAL-3.6.2 and jdk-16.0.2+7 as subdirectories.
  6. Check that this Java works. Run: jdk-16.0.2+7/Contents/Home/bin/java --version from the directory you created in step 1.
  7. Try running Vassal. Run: JAVA=jdk-16.0.2+7/Contents/Home/bin/java VASSAL-3.6.2/VASSAL.sh from the directory you created in step 1.

If you go this route, I’m happy to consult further on any problems you run into.

It worked like magic, many thanks!

Starting VASSAL this way, however, is not very handy. I don’t want to appear greedy, but now that it works, is there any other way starting 3.6.2 for my configuration?

You could avoid needing to set JAVA when you run the launch script by making sure that the java you want to use is on the PATH. If you did that, you could run just by launching the script without specifying anything else. I’m not sure what the typical way to go about that on MacOS is. (This solution assumes that nothing on your machine relies on using whatever java is currently on your PATH.)

Another way would be to install the Mac DMG and replace the Java bundled inside it with this one. For that, you’d delete everything inside /Applications/VASSAL3.6.2.app/Contents/MacOS/jre and copy to that location everything in jdk-16.0.2+7/Contents/Home. This method won’t disturb anything else on your machine.

Presumably there’s also some way to put all that stuff in some kind of launchable script file? (I know almost nothing of the ways of Macs, I’m just assuming there’s gotta be a way to make that into a double-click-this-icon-and-it-launches)

The easiest way to do that would be to replace the Java in the app bundle.

Replacing the Java in the app bundle fully does the trick. It starts as usual on a double-click on the app icon.

2 Likes