DynamoDB Local: Failed to load native library sqlite4java
TL;DR — DynamoDB Local のストレージエンジンは起動時にネイティブライブラリ(sqlite4java)をロードしますが、JVM がそれを見つけられないか実行できません。2つの典型的な原因: -Djava.library.path=./DynamoDBLocal_lib なしで jar を起動した、または 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.pathDynamoDB Local は、そのディスク上のストレージがネイティブ(OS ごと、アーキテクチャごと)ライブラリで支えられている Java アプリケーションです。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 をダウンロードします。キャッシュされた古いバージョンは、「更新」した後でも古いネイティブを残します。 - クリーンアップされた temp ディレクトリに展開されたネイティブ — 一部のセットアップは OS がクリアする temp フォルダに展開するため、再起動まで動作します。
修正方法
展開したフォルダから、ドキュメントどおりの方法で起動します:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDbDynamoDB 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 に一致する)か、
libsqlite4java-osx.dylibをコミュニティが公開した sqlite4java の ARM64 ビルドに置き換えます。インメモリの抜け道:
-inMemoryは現在のビルドでも依然としてライブラリを必要とします。欠落したネイティブの回避策ではありません。代わりにパス/アーキテクチャを修正してください。
エミュレータが起動したら、ツールをそれに向けます。DynoTable デスクトップアプリ は DynamoDB Local に http://localhost:8000 で接続するため、スクリプトを書かずにテーブルを作成しデータを検査できます。DynamoDB JSON コンバーター を使って、ワイヤーフォーマットのシードアイテムを準備しましょう。
関連するエラー
- Unable to start DynamoDB Local process — これがしばしば内側に隠れる、包括的な起動失敗。
- DynamoDB Local port 8000 in use
- Could not connect to DynamoDB Local
- Learn: 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 ドキュメントに照らして確認しました。