Luke Hagan

Fix for Java apps on OS X 10.10 Yosemite

Use legacy Java apps without installing an old, insecure version of Java.

Recent versions of OS X don’t come with Java preinstalled, and I’d rather not even bother installing it, but there’s one Java-based app that I still rely on: BudgetCalendar.[^1] On my old Air, it was working fine in Yosemite, but on my new Macbook, no dice:

To view this web content, you need to install the Java Runtime Environment.

OK, that error message even includes a link to Oracle’s download page for JRE 8, so no problem right?

Unfortunately, after installing the JRE, I still got the same message. Searching the web, I found a few posts suggesting that I install an old version of Java from Apple.

Don’t do that; there’s a reason Apple stopped bundling Java with OS X and wants you to use Oracle’s latest version instead.[^2]

More helpful was an ask Ask Different answer, which suggests installing the Java SDK.[^3] That’s definitely a better idea, but I’m not planning on doing any Java development, so I kept looking for another option.

In the BudgetCalendar app bundle, I found that it uses a shell script to start. That script in turn uses the java command, which at this point does nothing but open the popup that prompts you to install Java.

But shouldn’t the JRE installation include java? Yes, Oracle’s documentation reveals the loction:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java

OK, so all that’s necessary is to replace the placeholder java[^4] with the real thing:

sudo mv /usr/bin/java /usr/bin/java-1
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

And it works! This might break with subsequent OS X updates, but it seems like a fine solution to me, at least until the BudgetCalendar developers provide a fix.

[^1]: Actually 2, but I’m not counting CrashPlan as they include Java as part of the CrashPlan app.

[^2]: Hint: it has to do with security.

[^3]: I later found that the developers of BudgetCalendar suggest the same fix when I went to contact them about this issue.

[^4]: Actually, a symlink.