DynamoDB Local: Failed to load native library sqlite4java
TL;DR — DynamoDB Local 的儲存引擎在啟動時載入一個原生程式庫(sqlite4java),而 JVM 要嘛找不到它、要嘛無法執行它。兩個經典原因:你啟動 jar 時沒有 -Djava.library.path=./DynamoDBLocal_lib,或你在 Apple Silicon Mac 上而隨附的二進位檔是給 x86_64 的。將 JVM 指向 native-lib 資料夾、更新到目前版本的 DynamoDB Local,或執行多架構的 Docker 映像。
這是什麼意思
Failed to load native library:'libsqlite4java-osx-1.0.392.dylib'. ...
java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64-1.0.392 in java.library.pathDynamoDB Local 是一個 Java 應用程式,其磁碟儲存由一個原生(各 OS、各架構)程式庫支撐。UnsatisfiedLinkError 是 JVM 表示它無法連結該二進位檔 — 要嘛它根本不在程式庫路徑上,要嘛檔案存在但是為與你 JVM 不同的 OS/CPU 架構建置的。沒有它,模擬器無法啟動。
為什麼會發生
- 缺少
-Djava.library.path— 下載檔將原生程式庫放在DynamoDBLocal_lib/,而文件記載的啟動指令必須將 JVM 指向那裡。單純執行java -jar DynamoDBLocal.jar(或從不同的工作目錄)就會遺失它們。 - Apple Silicon(M 系列)+ x86_64 原生程式庫 — 較舊的 DynamoDB Local 建置與包裝器只隨附 Intel 的
libsqlite4java-osx二進位檔;ARM64 JVM 拒絕載入它們(「no matching architecture」)。 - 包裝器釘住舊的副本 —
jest-dynamodb、serverless-dynamodb-local等工具會下載它們自己的 DynamoDB Local;快取的舊版本即使在你「更新」後仍保留過時的原生程式庫。 - 原生程式庫解壓到被清理的暫存目錄 — 有些設定解壓到 OS 會清除的暫存資料夾,因此在重新開機前都可運作。
如何修正
以文件記載的方式從解壓後的資料夾啟動它:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb更新 DynamoDB Local — 下載目前的版本;較新的建置解決了困擾舊版的 Apple Silicon 狀況。若有包裝器管理安裝,清除其快取/重新安裝,讓它確實取得新版本。
或以 Docker 完全避開原生程式庫 —
amazon/dynamodb-local映像是最不脆弱的路徑,並可在 Apple Silicon 上執行:docker run -p 8000:8000 amazon/dynamodb-local在 Apple Silicon 上且無法變更舊建置時: 在 Rosetta 2 下執行 x86_64 JDK(Intel 原生程式庫便與 JVM 相符),或以社群發布的 ARM64 版 sqlite4java 替換
libsqlite4java-osx.dylib。記憶體逃生口: 在目前的建置中,
-inMemory仍需要該程式庫 — 它不是缺少原生程式庫的變通方法;請改為修正路徑/架構。
模擬器啟動後,將你的工具指向它 — DynoTable 桌面應用程式在 http://localhost:8000 連到 DynamoDB Local,讓你無需撰寫指令碼就能建立表格與檢視資料。使用 DynamoDB JSON 轉換器以線路格式準備種子項目。
相關錯誤
- Unable to start DynamoDB Local process — 這常隱藏其中的總體啟動失敗。
- DynamoDB Local port 8000 in use
- Could not connect to DynamoDB Local
- 學習:Running DynamoDB Local
References
- Deploying DynamoDB locally on your computer — AWS DynamoDB Developer Guide (the documented
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jarlaunch command) - DynamoDB local usage notes — AWS DynamoDB Developer Guide (
-sharedDb,-inMemoryand the other runtime options) - amazon/dynamodb-local — Docker Hub (official multi-architecture image — amd64 + arm64, so it runs natively on Apple Silicon)
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。