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.0Angka-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
javasistem masih 8 atau 11 — umum pada image CI lama dan mesin di mana LTS JDK dipasang bertahun-tahun lalu.JAVA_HOME/PATHmenunjuk 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
Periksa apa yang sebenarnya berjalan:
java -versionInstal 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 -sharedDbAtau hapus persyaratan Java lokal — image Docker mengirim runtime yang kompatibel:
docker run -p 8000:8000 amazon/dynamodb-localPerbarui 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:8000 — aplikasi desktop DynoTable terhubung ke DynamoDB Local sebagai endpoint kelas satu, dan DynamoDB Expression Builder menyusun kueri yang akan Anda jalankan terhadapnya.
Kesalahan terkait
- DynamoDB Local: unable to start process — kegagalan startup lain setelah Java sendiri benar.
- DynamoDB Local: sqlite4java errors — saudara native-library.
- DynamoDB Local: port 8000 in use
- Pelajari: DynamoDB Local
References
- Deploying DynamoDB locally on your computer — AWS DynamoDB Developer Guide (the JRE 17+ requirement for v2.6.0+, launch command, version listing)
- DynamoDB local usage notes — AWS DynamoDB Developer Guide (
-sharedDband the other runtime options) - amazon/dynamodb-local — Docker Hub (official image bundles a compatible Java runtime)
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.