DynamoDB Local: UnsupportedClassVersionError
TL;DR — Java çalışma zamanınız, DynamoDB Local'in derlendiği sürümden daha eski. Güncel DynamoDB Local (v2.6.0 ve daha yenisi, v3.x dahil) JRE 17+ gerektirir — onu Java 8/11'de başlatmak, JVM'in sınıf dosyalarını UnsupportedClassVersionError ile reddetmesine neden olur. Bir Java 17+ çalışma zamanı (Temurin, Corretto, …) kurun ve yeniden çalıştırın ya da amazon/dynamodb-local Docker imajıyla yerel Java'yı tamamen atlayın.
Ne anlama gelir
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.0Sayılar uyuşmazlığı çözer: sınıf dosyası sürümü 61 Java 17'dir, 52 Java 8'dir. Jar'ın bayt kodu, PATH'inizdeki java'dan daha yeni bir JVM'i hedefler, bu yüzden JVM, DynamoDB Local tek bir satır çalıştırmadan önce durdurur. AWS tabanı açıkça belgeler: v2.6.0+ 17'den eski JRE'lerde çalışmaz.
Neden olur
- Sistem
java'sı hâlâ 8 ya da 11 — yıllar önce bir LTS JDK'nın kurulduğu eski CI imajlarında ve makinelerde yaygındır. JAVA_HOME/PATHeski JDK'yı gösteriyor — daha yeni bir JDK kurulu ama kabuk önce eskisini çözüyor.- DynamoDB Local'in bir yükseltmesi gereksinimi aştı — 1.x jar'ları Java 8'de çalışıyordu; onları 2.x/3.x ile değiştirmek çıtayı sessizce 17'ye yükseltti.
- Bir derleme aracı araç zincirini sabitliyor — eski bir araç zinciriyle yapılandırılmış Maven/Gradle, gömülü DynamoDB Local'i onun altında başlatır.
Nasıl düzeltilir
Gerçekte neyin çalıştığını kontrol edin:
java -versionBir Java 17+ çalışma zamanı kurun (herhangi bir dağıtım — Eclipse Temurin, Amazon Corretto vb.) ve kabuğunuzu ona yöneltin:
export JAVA_HOME=/path/to/jdk-17 export PATH="$JAVA_HOME/bin:$PATH" java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDbYa da yerel Java gereksinimini bırakın — Docker imajı uyumlu bir çalışma zamanı gönderir:
docker run -p 8000:8000 amazon/dynamodb-localCI imajlarını ve araç zincirlerini güncelleyin — DynamoDB Local'in başladığı her yerde Java 17+'yi sabitleyin (test çalıştırıcıları, Maven/Gradle araç zincirleri), böylece hata makine başına yeniden ortaya çıkmasın.
Port 8000'de başladığında, araçlarınızı http://localhost:8000'e yöneltin — DynoTable masaüstü uygulaması DynamoDB Local'e birinci sınıf bir uç nokta olarak bağlanır ve DynamoDB Expression Builder, ona karşı çalıştıracağınız sorguların taslağını oluşturur.
İlgili hatalar
- DynamoDB Local: unable to start process — Java'nın kendisi doğru olduğunda diğer başlatma hataları.
- DynamoDB Local: sqlite4java errors — yerel kitaplık kardeşi.
- DynamoDB Local: port 8000 in use
- Öğrenin: 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)
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.