Some Vassal modules not working properly with OS X Yosemite

Hello,

After “upgrading” to the Yosemite OS, the Vassal modules for Here I Stand and Virgin Queen don’t work properly any more. The problem is that all counters miss their numbers. For instance, impossible to say if an army counter is a 1, 2, 4 or 6 units counter.

Any solutions to this issue (apart from throwing my Mac out of the window)?

Thanks in advance for your help

I found that uninstalling Java 8 and going back to the Java 6 release on Apple’s website fixed it.

Thanks, but I have no idea how to do this…

Actually, I checked and I’m using Java 6, so that does not seem to be the problem here.

The rendering of text in SVG images is hideously broken in some versions of Java. As crazy as it sounds, it may well matter where your Java install came from–Apple or Oracle. If you know how to launch the Terminal app on your Mac, it might help if you could report what the following commands return when you type them in at the command prompt:

which java

and

java -version

All I can say with certainty is that SVG renders properly–thus these modules work fine–on OS 10.9 (Mavericks) with the Apple-provided Java 6 (update 65).

Thanks Joel for your help.

Here is what “java-version” returns:

java version “1.6.0_65”
Java™ SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot™ 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)

As for “which java”:

/usr/bin/java

And here is what the Vassal Error Log shows after I start Vassal, load the Virgin Queen module, and then load a VSAV file:

2014-10-20 10:56:36,368 [0-main] INFO VASSAL.launch.StartUp - Starting
2014-10-20 10:56:36,375 [0-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.10
2014-10-20 10:56:36,375 [0-main] INFO VASSAL.launch.StartUp - Java version 1.6.0_65
2014-10-20 10:56:36,375 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.13
2014-10-20 10:56:37,325 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2014-10-20 10:56:51,944 [0-SwingWorker-pool-107912042-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /Users/users/Documents/Vassal/Virgin_Queen_2.2.vmod
2014-10-20 10:56:52,267 [0-SwingWorker-pool-107912042-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile.
2014-10-20 10:56:52,268 [0-SwingWorker-pool-107912042-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Virgin Queen
2014-10-20 10:56:52,279 [0-SwingWorker-pool-107912042-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Xms256M -Xmx512M -DVASSAL.id=1 -DVASSAL.port=54655 -Duser.home=/Users/users -cp Contents/Resources/Java/Vengine.jar -Xdock:name=Virgin Queen -Xdock:icon=/Applications/VASSAL 2.app/Contents/Resources/VASSAL.icns -Dapple.awt.graphics.UseQuartz=false VASSAL.launch.Player --load – /Users/users/Documents/Vassal/Virgin_Queen_2.2.vmod
2014-10-20 10:56:52,982 [1-main] INFO VASSAL.launch.StartUp - Starting
2014-10-20 10:56:52,994 [1-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.10
2014-10-20 10:56:52,994 [1-main] INFO VASSAL.launch.StartUp - Java version 1.6.0_65
2014-10-20 10:56:52,994 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.13
2014-10-20 10:56:52,994 [1-main] INFO VASSAL.launch.Launcher - Player
2014-10-20 10:56:54,447 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - VASSAL images folder found at jar:file:/Applications/VASSAL%202.app/Contents/Resources/Java/Vengine.jar!/images/
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family network-server created for network-server.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family go-down created for go-down.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family network-idle created for network-idle.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family VASSAL created for VASSAL.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family calculator created for calculator.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family go-up created for go-up.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family VASSAL-jabber created for VASSAL-jabber.png
2014-10-20 10:56:54,452 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family jabber created for jabber.png
2014-10-20 10:56:54,453 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family bug created for bug.png
2014-10-20 10:56:54,453 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family yes created for yes.svg
2014-10-20 10:56:54,453 [1-IconFactory-preload] INFO VASSAL.tools.icon.IconFactory - Icon family no created for no.svg
2014-10-20 10:56:57,078 [1-AWT-EventQueue-0] WARN VASSAL.launch.BasicModule - Virgin Queen version 2.2
2014-10-20 10:57:22,708 [0-ProcessLauncher-2] WARN VASSAL.tools.logging.LoggedOutputStream - 2014-10-20 10:57:22.707 java[800:95957] plugin com.getdropbox.dropbox.garcon interrupted

As must be obvious by now, I’m no IT guru, but it seems to me that I’m using the “right” Java version (e.g. Java 6 update 65, the one that works with Mavericks). So uninstalling Java does not seem the right move. Any advice as to a next step?

I get the same answers in Terminal. My Modules run fast, but I installed Virgin Queen and no numbers. Strange.

Same problem here. I check also with Java 6.xx and 7.xx. Sometimes it works sometimes not, and this is funny !!!

Any resolution?
I have same problem with HIS module. I tried with Apple and oracle java. Same output.

It could be awhile before troubleshooting can even begin on this. I have no plans to upgrade to Yosemite myself, and the VASSAL developer just moved to a different country and understandably needs some time to get settled.

The only workaround at present is to use these modules on a different computer not running Yosemite, if possible.

Same problem for me. Got it working.

Model: iMac12,2
OS: OS X Yosemite 10.10.1 (14B17)
CPU: 3,4 GHz Intel Core i7
Memory: 16 GB
Video: AMD Radeon HD 6970M
VASSAL: 3.2.13
Java: 1.6.0_65 / 1.8.0_20
Module: Here I Stand 3.2 / Twilight Struggle 3.1.2

The problem occurs when running VASSAL with Java 1.6.0_65 in the Yosemite Java 2014-001 package. The launcher shell script in VASSAL.app looks for Java in a few different places and begins with 1.6.0_65 in the JavaVM.framework instead of using the latest one 1.8.0_20 in the same framework.

Below are screenshots from Here I Stand 3.2 and Twilight Struggle 3.1.2 on VASSAL 3.2.13 running with the standard Java 1.6.0_65 by just launching VASSAL.app.

Manually launching Vassal with the also included “Current” Java 1.8.0_20 (no extra installation needed)

To automate this, add the following to the launcher script VASSAL.app/Contents/MacOS/VASSAL.sh

# try Apple's latest Java
JAVA="/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java"
if [ ! -x "$JAVA" ]; then

above

# try Apple's Java 6
JAVA="/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Commands/java"

and add an extra

fi

to the bottom. I’ve made a patch file for VASSAL.sh, which does this while also tidying up the indentation.

This change makes VASSAL.app always try to first launch with the “Current” Java version, which fixes the issues with these modules.

Apply the patch after download by opening Terminal.app, change to the VASSAL.app directory and then patch the file.

$ cd /Applications/VASSAL.app
$ patch -p0 < ~/Downloads/VASSAL.sh.patch
patching file Contents/MacOS/VASSAL.sh

You will then have to restart VASSAL.app if it’s already running. Hope you get it working!

The above also fixes the counters’ missing numbers.

Thus spake magu:

The problem occurs when running VASSAL with Java 1.6.0_65 in the
Yosemite Java 2014-001 package. The launcher shell script in
VASSAL.app looks for Java in a few different places and begins with
1.6.0_65 in the JavaVM.framework instead of using the latest one
1.8.0_20 in the same framework.

Thanks for digging into this. I have several questions.

  1. Why is Java 8 is found at

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

in Yosemite? That was the old symlink that Apple used for Java 5 and 6.
One wouldn’t get that symlink pointing at Oracle’s Java 7 after
installing it, so far as I know. Does this mean that Apple is back to
packaging Java again? Is this an Oracle package, but better integrated
than Oracle’s Java 7 packages? Does this apply only to Java 8 in
Yosemite? (Are there Java 8 packages for earlier versions of OS X?)

  1. I’m unclear on whether your changes will work in all cases. We’ve
    changed the VASSAL.sh we ship for OS X several times in the past year or
    so due to reports of problems which occured on some, but not all Macs.
    Commits 9020, 9013, 9007, 9004, and 8932 may all be relevant here.

The commit message for 9020 indicates that we had a problem with using
the “Current” symlink:

Don’t use the Current symlink for findingu Apple Java. It will
(aggravatingly) point to a program which asks you to install Apple
Java—which means that the existence of Current/Commands/java does not
indicate that Apple Java is actually installed.

Won’t your patch reintroduce that problem?

I believe that we specifically set the search order to be Java 6, then
Java 5, then Oracle’s Java 7, due to Oracle’s Java 7 having severe
graphics issues for some people, but Java 6 being ok for everyone. But
from your post, it appears that Java 6 is a problem for you. Up the
thread, someone else says that they had the same problem with Java 8
which went away when they returned to Java 6…

So, we need to track down which combinations of OS version and Java
are having which problems.


J.

Indeed interesting to say the least.

I redownloaded Java for OS X 2014-001 from Apple and opened it in Pacifist, and it looks like this.

I.e. it includes only one version of Java which is put in the /System/Library/Frameworks/JavaVM.framework/Versions/A directory, which in turn gets symlinked to Current.

vegapunk:JavaVM.framework magu$ ls -al Versions/
total 128
drwxr-xr-x  11 root  wheel  374  2 Okt 20:16 .
drwxr-xr-x  12 root  wheel  408 19 Okt 09:13 ..
lrwxr-xr-x   1 root  wheel   10  2 Okt 20:16 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  2 Okt 20:16 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  2 Okt 20:16 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  2 Okt 20:16 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  2 Okt 20:16 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10  2 Okt 20:16 1.6.0 -> CurrentJDK
drwxr-xr-x   8 root  wheel  272  2 Okt 20:16 A
lrwxr-xr-x   1 root  wheel    1  2 Okt 20:16 Current -> A
lrwxr-xr-x   1 root  wheel   59  2 Okt 20:16 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

That in turn reports its version as following:

vegapunk:JavaVM.framework magu$ Versions/A/Commands/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

So, as far as I can tell, it surely seems like Apple is shipping Java 8 in their latest Java package for Mountain Lion, Mavericks and Yosemite.

It also seems the installer symlinks the binaries in /usr/bin to the “Current” version.

vegapunk:~ magu$ ls -al /usr/bin/java*
lrwxr-xr-x  1 root  wheel     74  8 Nov 16:35 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
lrwxr-xr-x  1 root  wheel     75  2 Okt 20:16 /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
-rwxr-xr-x  1 root  wheel  47360 13 Jun  2012 /usr/bin/javaconfig
lrwxr-xr-x  1 root  wheel     77  2 Okt 20:16 /usr/bin/javadoc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc
lrwxr-xr-x  1 root  wheel     75  2 Okt 20:16 /usr/bin/javah -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javah
lrwxr-xr-x  1 root  wheel     75  2 Okt 20:16 /usr/bin/javap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javap
-rwxr-xr-x  1 root  wheel  69424 13 Jun  2012 /usr/bin/javatool
lrwxr-xr-x  1 root  wheel     76  8 Nov 16:35 /usr/bin/javaws -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws

Have you tried defaulting to /usr/bin/java?

Solution provided by magu works perfectly. Thanks.
I just get rid off all Apple’s java from Vassal.sh and left only Oracle Java.
Problem solved.

I installed magu’s patch, but this does not solve my problem at all :frowning:(

This is the part of magu’s research that I cannot replicate (I’m on OS X Yosemite, i.e. 10.10). The most recent Apple Java download only contains Java 6 update 65, as best I can tell. I can’t get it to report the same command-line output he got, which reported Java 8 update 20.

If I install either Oracle’s Java 7 update 71 or Java 8 update 25, the SVG text rendering problem goes away, but in place of that problem I instead get horrifically slow, sluggish performance.

My experience confirms that, in the sense that despite the patch, Vassal keeps using Java 6 update 65 (as reported in the Error logs). So I assume the patched Vassal launch file fails to find any more recent Java version on my computer.

As far as installing Java 7 or 8, I have not tried. Too dumb for that. Installing the patch already stretched my computing capabilities to their very limit…

It’s no different than any other installer for MacOS. Download from Oracle, double-click to open, run the installer.