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.0

Sayı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/PATH eski 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

  1. Gerçekte neyin çalıştığını kontrol edin:

    java -version
  2. Bir 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 -sharedDb
  3. Ya da yerel Java gereksinimini bırakın — Docker imajı uyumlu bir çalışma zamanı gönderir:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. CI 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

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.