Synology Diskstation 上的 Crashplan 4.5 UnsatisfiedLinkError

Synology Diskstation 上的 Crashplan 4.5 UnsatisfiedLinkError

我一直在奔跑帕特斯港崩溃计划在我的 Synology Diskstation DS213j (ARM CPU) 上。我最近将 DiskStation 操作系统升级到 DSM 6.0。

作为升级的一部分,CrashPlan 服务在重启期间自行升级到最新版本。我在重启 CrashPlan 时遇到了一点麻烦,因为此版本自带非 ARM JRE,因此我将其指向 DSM 6.0 附带的 Java 8 JRE。

现在 CrashPlan 启动正常,但无法备份。GUI 显示“初始备份未完成”。在日志中我看到

ERROR 95988_AUTH-1 .service.backup.BackupController] Exception setting up BackupController! , java.lang.UnsatisfiedLinkError: /volume1/@tmp/jna-3506402/jna7016685188129052391.tmp: /volume1/@tmp/jna-3506402/jna7016685188129052391.tmp: internal error
STACKTRACE:: java.lang.UnsatisfiedLinkError: /volume1/@tmp/jna-3506402/jna7016685188129052391.tmp: /volume1/@tmp/jna-3506402/jna7016685188129052391.tmp: internal error
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1821)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:761)
    at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:736)
    at com.sun.jna.Native.<clinit>(Native.java:131)
    at com.code42.jna.LinuxPlatform.<init>(LinuxPlatform.java:76)
    at com.code42.jna.PlatformFactory.getLinuxPlatform(PlatformFactory.java:41)
    at com.code42.jna.inotify.InotifyManager.<clinit>(InotifyManager.java:47)
    at com.code42.jna.inotify.JNAInotifyFileWatcherDriver.<init>(JNAInotifyFileWatcherDriver.java:22)
    at com.code42.backup.path.BackupSetsManager.initFileWatcherDriver(BackupSetsManager.java:417)
    at com.code42.backup.path.BackupSetsManager.setUp(BackupSetsManager.java:153)
    at com.code42.backup.BackupManager.setUp(BackupManager.java:141)
    at com.backup42.service.backup.BackupController.setUp(BackupController.java:456)
    at com.backup42.service.CPService.changeLicense(CPService.java:2809)
    at com.backup42.service.CPService.authorize(CPService.java:2705)
    at com.backup42.service.peer.Authorizer.doWork(Authorizer.java:927)
    at com.code42.utils.AWorker.run(AWorker.java:148)
    at java.lang.Thread.run(Thread.java:745)

/volume1/@tmp/jna-3506402/jna7016685188129052391.tmp是一个 ELF 二进制文件,该目录位于 CrashPlan JVM 的 tmpdir 内。

我将其解释为新版 CrashPlan 附带了一些本机库,而这些库不是为 ARM CPU 构建的。我还看到 CrashPlan 4.5需要 Linux 内核 2.6.32 或更高版本,如果不存在,则可能会出现inotify调用问题。如上图所示。

我是不是被坑了?如果没有适用于我平台的 CrashPlan 原生库,我根本没法启动它。我还有两年的 CrashPlan 订阅期,但出于多种原因,从我的 PC 运行它远不如从我的 NAS 运行它好。

答案1

用从 Maven 下载的全新 jna.jar 替换 CrashPlan 提供的 jna.jar 即可。请参阅马丁·克莱曼的指示:

  1. 下载:https://maven.java.net/content/repositories/releases/net/java/dev/jna/jna/4.2.2/jna-4.2.2.jar
  2. 转到/var/packages/CrashPlan/target/binjna.jar 并进行备份(mv jna.jar jna.backup
  3. 将下载的jna-4.2.2.jar重命名为jna.jar 13将下载的jna.jar复制到该/var/packages/CrashPlan/target/bin目录

相关内容