CrashPlan on Mac OS 10.9 Mavericks with Java 7

First posted on the 31st October, 2013 – IT
Last modified on the 20th January, 2014, at 10:01 pm

Although the current version of CrashPlan is Java 1.7 (Java 7) compatible when you first launch it on a clean install of Mavericks is still prompts you to install Java 6 from Apple. This kind of defeats the object of saying it is Java 1.7 compatible!

Although others have worked out how to use Java 7 for the pro version of CrashPlan or for systems where both Java 6 and Java 7 runtimes are installed it was not too clear for Mac OS using just the Oracle Java 7 runtime.

To make matter worse clean uninstallation of Apples Java 6 is near impossible and would probably lead to more issues than it would solve. Thus the aim was to get CrashPlan working using Oracles Java 7 on a clean install of Mavericks. The trick is to direct the backup engine to use Oracle java and not /usr/bin/java which is where Apples Java 6 is and hence prompts for installation.

  1. download and install the current Java 7 JDK from Oracle. Note this is the JDK not just the runtime enviroemnt that you would normally install
  2. download and install the current version of CrashPlan
  3. when prompted cancel the prompt to download and install Java 6 from Apple
  4. stop the CrashPlan backup engine by unloading the launched agent
    sudo launchctl unload /Library/LaunchDaemons/com.crashplan.engine.plist
  5. edit the com.crashplan.engine.plist launch agent and change the /usr/bin/javato
    /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/bin/java
  6. restart the CrashPlan backup engine by loading the launched agent
    sudo launchctl load /Library/LaunchDaemons/com.crashplan.engine.plist

  7. now open the CrashPlan executable directly using terminal/Application/CrashPlan.app/Contents/MacOS/CrashPlan
  8. Once the GUI launches then proceed as normal and create a new backup or adopt an old one, finally launch the menu bar item

The only issue is that you can’t launch the Crahplan GUI from the icon or the menu bar item menu. This just stalls and you have to force quit. I just created an alias to the executable.

I think what is happening is that the double click on the app bundle executes either the JavaCheck or CrashPlanLauncher executable which only check for Java 6 and then if found then call the CrashPlan executable. If this is the case then it should be possible to redirect the bundle to another executable. As this is quite simple fix for CrashPlan I really hope a fix come soon as the hard ware has been done to add Java 7 compatibility already.

Update

An article from Code42 now shows how to tell java to allow bundled apps and allow you to launch CrashPlan GUI from the icon by adding the following to the JDK Info.plist:

JVMCapabilities

JNI
BundledApp
CommandLine

Also to stop the irritating “you need Java 6” dialogue I just unloaded and moved the responsible system launchd agent:

sudo launchctl unload /System/Library/LaunchAgents/com.apple.java.InstallOnDemand.plist
sudo mv /System/Library/LaunchAgents/com.apple.java.InstallOnDemand.plist /System/Library/LaunchAgents/com.apple.java.InstallOnDemand.plist.org