CrashPlanPRO_2010-03-08_Linux.tgz vs Linux-3.2.0

You are running the older release of Crashplan (CrashPlanPRO 2010-03-08) and you want to run the crashplan client headless on a newer distribution of Linux. The problem arises when the Linux kernel is 3.2.x or higher.

The crashplan client on the linux box gives you this error:

Exception in thread "W736065360_ScanWrkr" java.lang.NoClassDefFoundError: Could not initialize class com.backup42.jna.inotify.InotifyManager
at com.backup42.jna.inotify.JNAInotifyFileWatcherDriver.(JNAInotifyFileWatcherDriver.java:22)
at com.code42.backup.path.BackupPathsManager.createFileWatcherDriver(BackupPathsManager.java:537)
at com.code42.backup.path.BackupPathsManager.startScheduledFileQueue(BackupPathsManager.java:465)
at com.code42.backup.path.BackupPathsManager.access$700(BackupPathsManager.java:97)
at com.code42.backup.path.BackupPathsManager$ScanWorker.delay(BackupPathsManager.java:1761)
at com.code42.utils.AWorker.run(AWorker.java:157)
at java.lang.Thread.run(Thread.java:724)

I was unable to find the answer in the Crashplan forums so I tapped on support for help. Crashplan support had me looking at cache, java versions, and permissions; all dead ends.

So I looked up how to strace java and that’s what I saw a bunch of API calls to JNI stuff. Sent that information back to Crashplan support and got my answer from Jack P. (Thanks Jack!)

The fix requires replacing some JNI stuff that is grossly out of date for Linux kernel 3.2. Assuming you put the crashplan client into /usr/local/crashplan:

# cd /usr/local/crashplan/lib#
# wget http://download.java.net/maven/2/net/java/dev/jna/jna/3.2.5/jna-3.2.5.jar
# mkdir ../backup
# mv jna-3.0.9.jar ../backup/
# ln -s /usr/local/crashplan/lib/jna-3.2.5.jar /usr/local/crashplan/lib/jna-3.0.9.jar
# /etc/init.d/crashplan start

That fixes the problem.