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 指向原生庫資料夾、更新到當前的 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.path
# Unable to start DynamoDB Local — native library load failureDynamoDB Local 是一個 Java 應用,其磁碟儲存由一個原生(按作業系統、按架構劃分的)庫支撐。UnsatisfiedLinkError 是 JVM 在說它無法連結那個二進位制檔案——要麼它根本不在庫路徑上,要麼檔案存在但是為與你 JVM 不同的作業系統/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;一個快取的舊版本即使在你"更新"之後仍留著陳舊的原生庫。 - 原生庫被解壓到一個被清理的臨時目錄——某些設定把它們解包進一個作業系統會清空的臨時資料夾,所以它能用到重啟為止。
如何修正
按文件的方式,從解壓後的資料夾啟動它:
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 匹配了),或者用社群釋出的 sqlite4java ARM64 構建替換
libsqlite4java-osx.dylib。記憶體逃生艙口: 在當前構建中,
-inMemory仍然需要該庫——它不是缺失原生庫的變通方法;請改為修復路徑/架構。
模擬器啟動後,把你的工具指向它——DynoTable 桌面應用在 http://localhost:8000 連線到 DynamoDB Local,讓你無需編寫指令碼即可瀏覽和檢查你已灌入種子資料的表。用 DynamoDB JSON 轉換器以傳輸格式準備種子項目。
在 DynoTable 中開啟
本地啟動後,從 DynoTable — Settings → Profiles → 端點 http://localhost:8000、任何區域字串、虛擬憑據進行連線,然後 Test Connection。使用 ⌘K 開啟種子表,無需編寫連線指令碼。使用 JSON converter 準備種子資料。請參閱 安裝 和 連線 AWS 瞭解完整的本地設定路徑。
來源
- Deploying DynamoDB locally(2026-07-13 驗證)
- amazon/dynamodb-local — Docker Hub(2026-07-13 驗證)
相關錯誤
- Unable to start DynamoDB Local process——這經常隱藏其中的總括性啟動失敗。
- DynamoDB Local 埠 8000 被佔用
- Could not connect to DynamoDB Local
- 學習:Running DynamoDB Local
參考資料
- 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 官方文件。