DynamoDB Local: UnsupportedClassVersionError

TL;DR — Java runtime Anda lebih tua dari yang menjadi target kompilasi DynamoDB Local. DynamoDB Local terkini (v2.6.0 dan lebih baru, termasuk v3.x) membutuhkan JRE 17+ — meluncurkannya di Java 8/11 membuat JVM menolak file kelas dengan UnsupportedClassVersionError. Instal Java 17+ runtime (Temurin, Corretto, …) dan jalankan ulang, atau lewati Java lokal sepenuhnya dengan image Docker amazon/dynamodb-local.

Apa artinya

Error: A JNI error has occurred...
java.lang.UnsupportedClassVersionError: com/amazonaws/services/dynamodbv2/local/main/ServerRunner
has been compiled by a more recent version of the Java Runtime
(class file version 61.0), this version of the Java Runtime only
recognizes class file versions up to 52.0

Angka-angka menerjemahkan ketidakcocokan: class file version 61 adalah Java 17, 52 adalah Java 8. Bytecode jar menargetkan JVM yang lebih baru dari java di PATH Anda, jadi JVM membatalkan sebelum DynamoDB Local menjalankan satu baris pun. AWS mendokumentasikan batas bawah secara eksplisit: v2.6.0+ tidak berjalan di JRE yang lebih tua dari 17.

Mengapa terjadi

  • java sistem masih 8 atau 11 — umum pada image CI lama dan mesin di mana LTS JDK dipasang bertahun-tahun lalu.
  • JAVA_HOME/PATH menunjuk ke JDK lama — JDK yang lebih baru terpasang, tetapi shell menyelesaikan yang legacy terlebih dahulu.
  • Peningkatan DynamoDB Local melewati persyaratan — jar 1.x berjalan di Java 8; menggantinya dengan 2.x/3.x diam-diam menaikkan batas ke 17.
  • Alat build menyematkan toolchain — Maven/Gradle yang dikonfigurasi dengan toolchain lama meluncurkan DynamoDB Local yang tertanam di bawahnya.

Cara memperbaikinya

  1. Periksa apa yang sebenarnya berjalan:

    java -version
  2. Instal Java 17+ runtime (distribusi apa pun — Eclipse Temurin, Amazon Corretto, dll.) dan arahkan shell Anda ke sana:

    export JAVA_HOME=/path/to/jdk-17
    export PATH="$JAVA_HOME/bin:$PATH"
    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
  3. Atau hapus persyaratan Java lokal — image Docker mengirim runtime yang kompatibel:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. Perbarui image CI dan toolchain — sematkan Java 17+ di mana pun DynamoDB Local dimulai (test runner, toolchain Maven/Gradle), agar kesalahan tidak muncul kembali per mesin.

Setelah booting di port 8000, arahkan tooling Anda ke http://localhost:8000aplikasi desktop DynoTable terhubung ke DynamoDB Local sebagai endpoint kelas satu, dan DynamoDB Expression Builder menyusun kueri yang akan Anda jalankan terhadapnya.

Kesalahan terkait

References

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

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.