从Neo4j Aura迁移至Ubuntu VM执行neo4j-admin加载时遇UnsatisfiedLinkError错误
解决Neo4j Aura迁移至Ubuntu虚拟机的备份加载错误
环境信息
- Neo4j版本:5.7.0
- 虚拟机系统:Ubuntu 22.04.1 LTS(GNU/Linux 5.15.0-47-generic x86_64)
- 操作目标:将Neo4j Aura备份数据加载至校内虚拟机,提升局域网内应用通信速度
报错详情
执行加载命令时出现两类错误,命令及完整输出如下:
root@DPT-X-11011:~# neo4j-admin version /etc/default/neo4j: line 22: server.bolt.listen_address=0.0.0.0:7687: command not found neo4j 5.7.0 root@DPT-X-11011:~# ../bin/neo4j-admin database load neo4j --from-path=./snapshot/31-5-2023/ --overwrite-destination=true /etc/default/neo4j: line 22: server.bolt.listen_address=0.0.0.0:7687: command not found Exception in thread "main" java.lang.UnsatisfiedLinkError: /tmp/libzstd-jni-1.5.4-215256062990507315695.so: /tmp/libzstd-jni-1.5.4-215256062990507315695.so: failed to map segment from shared object no zstd-jni-1.5.4-2 in java.library.path: /usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib Unsupported OS/arch, cannot find /linux/amd64/libzstd-jni-1.5.4-2.so or load zstd-jni-1.5.4-2 from system libraries. Please try building from source the jar or providing libzstd-jni-1.5.4-2 in your system. at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2429) at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818) at java.base/java.lang.System.loadLibrary(System.java:1989) at com.github.luben.zstd.util.Native$1.run(Native.java:69) at com.github.luben.zstd.util.Native$1.run(Native.java:67) at java.base/java.security.AccessController.doPrivileged(AccessController.java:318) at com.github.luben.zstd.util.Native.loadLibrary(Native.java:67) at com.github.luben.zstd.util.Native.load(Native.java:154) at com.github.luben.zstd.util.Native.load(Native.java:85) at com.github.luben.zstd.ZstdInputStreamNoFinalizer.<init>(ZstdInputStreamNoFinalizer.java:23) at com.github.luben.zstd.ZstdInputStream.<init>(ZstdInputStream.java:24) at org.neo4j.dbms.archive.StandardCompressionFormat$2.decompress(StandardCompressionFormat.java:67) at org.neo4j.dbms.archive.DumpZstdFormatV1.decompress(DumpZstdFormatV1.java:37) at org.neo4j.dbms.archive.DumpFormatSelector.decompress(DumpFormatSelector.java:44) at org.neo4j.dbms.archive.Loader.openArchiveIn(Loader.java:212) at org.neo4j.dbms.archive.Loader.load(Loader.java:115) at org.neo4j.dbms.archive.Loader.load(Loader.java:77) at org.neo4j.commandline.dbms.LoadDumpExecutor.load(LoadDumpExecutor.java:97) at org.neo4j.commandline.dbms.LoadDumpExecutor.execute(LoadDumpExecutor.java:74) at org.neo4j.commandline.dbms.LoadCommand.loadDump(LoadCommand.java:197) at org.neo4j.commandline.dbms.LoadCommand.execute(LoadCommand.java:150) at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:92) at org.neo4j.cli.AbstractCommand.call(AbstractCommand.java:37) at picocli.CommandLine.executeUserObject(CommandLine.java:2041) at picocli.CommandLine.access$1500(CommandLine.java:148) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461) at picocli.CommandLine$RunLast.handle(CommandLine.java:2453) at picocli.CommandLine$RunLast.handle(CommandLine.java:2415) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273) at picocli.CommandLine$RunLast.execute(CommandLine.java:2417) at picocli.CommandLine.execute(CommandLine.java:2170) at org.neo4j.cli.AdminTool.execute(AdminTool.java:94) at org.neo4j.cli.AdminTool.main(AdminTool.java:82)
错误分析
- 配置文件被误执行:
/etc/default/neo4j第22行的配置项被当作shell命令执行,说明配置文件加载逻辑异常,可能是文件格式错误或Neo4j环境变量指向错误。 - zstd本地库缺失:Neo4j加载备份依赖zstd压缩库的JNI绑定,系统缺少对应库文件,或/tmp目录权限不足导致无法加载临时生成的库文件。
解决方案
1. 修复配置文件加载问题
- 检查
/etc/default/neo4j第22行,确保配置项server.bolt.listen_address=0.0.0.0:7687格式正确,无多余符号(如$、!)。 - 执行命令时手动指定正确的Neo4j主配置文件(通常为
/etc/neo4j/neo4j.conf),避免错误加载/etc/default/neo4j:../bin/neo4j-admin database load neo4j --from-path=./snapshot/31-5-2023/ --overwrite-destination=true --config=/etc/neo4j/neo4j.conf
2. 安装zstd系统依赖
- 更新包列表并安装zstd库:
sudo apt update && sudo apt install zstd libzstd-dev - 确保/tmp目录权限正确,允许进程写入和加载共享库:
sudo chmod 1777 /tmp
3. 手动补充zstd-jni库(若上述步骤无效)
- 下载对应amd64架构的
libzstd-jni-1.5.4-2.so文件,复制到系统JNI库目录:sudo cp libzstd-jni-1.5.4-2.so /usr/lib/x86_64-linux-gnu/jni/ - 更新系统库缓存:
sudo ldconfig
4. 验证修复
执行neo4j-admin version确认无配置错误后,重新运行数据库加载命令。
内容的提问来源于stack exchange,提问作者jerryIsHere
相关产品推荐
相关产品推荐

