DynamoDB Local: Failed to load native library sqlite4java

TL;DR — Die Storage-Engine von DynamoDB Local lädt beim Start eine native Bibliothek (sqlite4java), und die JVM findet sie entweder nicht oder kann sie nicht ausführen. Zwei klassische Ursachen: Du hast das Jar ohne -Djava.library.path=./DynamoDBLocal_lib gestartet, oder du bist auf einem Apple-Silicon-Mac und das mitgelieferte Binary ist für x86_64. Zeig der JVM den Native-Lib-Ordner, aktualisiere auf ein aktuelles DynamoDB Local, oder nimm das Multi-Arch-Docker-Image.

Was es bedeutet

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 Localnative library load failure

DynamoDB Local ist eine Java-Anwendung, deren On-Disk-Speicher von einer nativen (pro OS, pro Architektur) Bibliothek gestützt wird. UnsatisfiedLinkError ist die JVM, die sagt, dass sie diese Binary nicht linken konnte — entweder ist sie überhaupt nicht auf dem Library-Path, oder die Datei existiert, wurde aber für eine andere OS-/CPU-Architektur als deine JVM gebaut. Der Emulator kann ohne sie nicht starten.

Warum es passiert

  • Fehlendes -Djava.library.path — der Download liefert die Natives in DynamoDBLocal_lib/, und der dokumentierte Startbefehl muss die JVM dorthin richten. java -jar DynamoDBLocal.jar blank (oder aus einem anderen Arbeitsverzeichnis) auszuführen, verliert sie.
  • Apple Silicon (M-Serie) + ein x86_64-Native — ältere DynamoDB-Local-Builds und Wrapper bündeln nur Intel-libsqlite4java-osx-Binaries; eine ARM64-JVM weigert sich, sie zu laden ("no matching architecture").
  • Ein Wrapper, der eine alte Kopie festhältjest-dynamodb, serverless-dynamodb-local und ähnliche Tools laden ihr eigenes DynamoDB Local herunter; eine gecachte alte Version behält die veralteten Natives auch nach einem „Update“.
  • Natives in ein Temp-Verzeichnis entpackt, das aufgeräumt wurde — manche Setups entpacken in einen Temp-Ordner, den das OS leert, sodass es bis zum Neustart funktioniert.

So behebst du es

  1. Starte es auf die dokumentierte Weise, aus dem entpackten Ordner:

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
  2. Aktualisiere DynamoDB Local — lade das aktuelle Release herunter; neuere Builds lösen die Apple-Silicon-Situation, die ältere plagte. Wenn ein Wrapper die Installation verwaltet, leere seinen Cache/installiere neu, sodass er die neue Version tatsächlich holt.

  3. Oder umgehe Natives ganz mit Docker — das amazon/dynamodb-local-Image ist der am wenigsten fragile Weg und läuft auf Apple Silicon:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. Auf Apple Silicon mit einem alten Build, den du nicht ändern kannst: führe ein x86_64-JDK unter Rosetta 2 aus (die Intel-Natives passen dann zur JVM), oder ersetze libsqlite4java-osx.dylib durch den Community-veröffentlichten ARM64-Build von sqlite4java.

  5. In-Memory-Notausgang: -inMemory braucht die Bibliothek in aktuellen Builds trotzdem — es ist kein Workaround für ein fehlendes Native; behebe stattdessen Path/Arch.

Sobald der Emulator oben ist, richte deine Tools darauf aus — die DynoTable-Desktop-App verbindet sich mit DynamoDB Local unter http://localhost:8000, sodass du deine geseedeten Tabellen durchsuchen und inspizieren kannst, ohne ein Skript zu schreiben. Nutze den DynamoDB-JSON-Konverter, um Seed-Items im Wire-Format vorzubereiten.

In DynoTable öffnen

Sobald Local startet, connect from DynoTable — Einstellungen → Profile → endpoint http://localhost:8000, any region string, dummy credentials, then Verbindung testen. Open seeded tables with ⌘K without writing a connectivity script.

Bereite Seed-Daten mit dem JSON Converter. See Installation and Mit AWS verbinden für den vollen Local-Setup-Pfad.

Quellen

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.