DynamoDB Lokal: Gagal memuat perpustakaan asli sqlite4java — "Failed to load native library sqlite4java"

TL;DR — Mesin penyimpanan DynamoDB Lokal memuat perpustakaan asli (sqlite4java) saat startup, dan JVM tidak dapat menemukannya atau tidak dapat menjalankannya. Dua penyebab klasik: Anda meluncurkan jar tanpa -Djava.library.path=./DynamoDBLocal_lib, atau Anda menggunakan Apple Silicon Mac dan biner yang dibundel adalah untuk x86_64. Arahkan JVM ke folder native-lib, perbarui ke DynamoDB Lokal saat ini, atau jalankan image Docker multi-lengkungan.

Apa artinya

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 Lokal adalah aplikasi Java yang penyimpanan pada disknya didukung oleh pustaka asli (per OS, per arsitektur). UnsatisfiedLinkError adalah JVM yang menyatakan bahwa ia tidak dapat menautkan biner tersebut — entah ia tidak ada di jalur perpustakaan sama sekali, atau file tersebut ada tetapi dibuat untuk arsitektur OS/CPU yang berbeda dari JVM Anda. Emulator tidak dapat memulai tanpanya.

Mengapa itu terjadi

  • -Djava.library.path Hilang — unduhan mengirimkan versi asli dalam DynamoDBLocal_lib/, dan perintah peluncuran yang terdokumentasi harus mengarahkan JVM ke sana. Menjalankan java -jar DynamoDBLocal.jar telanjang (atau dari direktori kerja lain) akan menghilangkannya.
  • Apple Silicon (M-series) + x86_64 native — build dan wrapper Lokal DynamoDB yang lebih lama hanya memaketkan binari Intel libsqlite4java-osx; JVM ARM64 menolak memuatnya ("tidak ada arsitektur yang cocok").
  • Pembungkus yang menyematkan salinan lamajest-dynamodb, serverless-dynamodb-local, dan alat serupa mengunduh DynamoDB Lokal mereka sendiri; versi lama yang di-cache membuat versi asli tetap ada bahkan setelah Anda "memperbarui".
  • Pribumi diekstraksi ke direktori sementara yang telah dibersihkan — beberapa pengaturan dibongkar ke dalam folder sementara yang dihapus OS, sehingga berfungsi hingga reboot.

Bagaimana cara memperbaikinya

  1. Luncurkan dengan cara yang terdokumentasi, dari folder yang diekstraksi:

    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
  2. Perbarui DynamoDB Lokal — unduh rilis saat ini; versi yang lebih baru menyelesaikan situasi Apple Silicon yang melanda versi lama. Jika wrapper mengelola instalasi, kosongkan cache/reinstall sehingga ia benar-benar mengambil versi baru.

  3. Atau hindari versi asli sepenuhnya dengan Docker — image amazon/dynamodb-local adalah jalur yang paling tidak rapuh dan berjalan di Apple Silicon:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. Di Apple Silicon dengan versi lama, Anda tidak dapat mengubahnya: jalankan x86_64 JDK pada Rosetta 2 (Intel asli kemudian cocok dengan JVM), atau ganti libsqlite4java-osx.dylib dengan versi ARM64 yang diterbitkan komunitas dari sqlite4java.

  5. Escape hatch dalam memori: -inMemory masih memerlukan pustaka dalam versi saat ini — ini bukan solusi untuk versi asli yang hilang; perbaiki jalur/arch sebagai gantinya.

Buka di DynoTable

Setelah Lokal dimulai, sambungkan dari DynoTable — Pengaturan → Profil → titik akhir http://localhost:8000, string wilayah mana pun, kredensial tiruan, lalu Uji Koneksi. Buka tabel unggulan dengan ⌘K tanpa menulis skrip konektivitas.

Siapkan data benih dengan konverter JSON. Lihat Instal dan Hubungkan ke AWS untuk jalur konfigurasi Lokal selengkapnya.

Sumber

Kesalahan terkait

Referensi

Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.