DynamoDB Local: UnsupportedClassVersionError

TL;DR — Deine Java-Runtime ist älter als die, für die DynamoDB Local kompiliert wurde. Aktuelles DynamoDB Local (v2.6.0 und neuer, einschließlich v3.x) verlangt JRE 17+ — es auf Java 8/11 zu starten, lässt die JVM die Class-Dateien mit UnsupportedClassVersionError ablehnen. Installiere eine Java-17+-Runtime (Temurin, Corretto, …) und führe es erneut aus, oder umgehe lokales Java ganz mit dem amazon/dynamodb-local-Docker-Image.

Was es bedeutet

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

Die Zahlen dekodieren die Diskrepanz: Class-File-Version 61 ist Java 17, 52 ist Java 8. Der Bytecode des Jars zielt auf eine neuere JVM als das java auf deinem PATH, sodass die JVM abbricht, bevor DynamoDB Local eine einzige Zeile ausführt. AWS dokumentiert die Untergrenze explizit: v2.6.0+ läuft nicht auf JREs älter als 17.

Warum es passiert

  • Das System-java ist noch 8 oder 11 — häufig auf älteren CI-Images und Maschinen, wo vor Jahren ein LTS-JDK installiert wurde.
  • JAVA_HOME/PATH zeigen auf das alte JDK — ein neueres JDK ist installiert, aber die Shell löst zuerst das Legacy-JDK auf.
  • Ein Upgrade von DynamoDB Local hat die Anforderung überschritten — die 1.x-Jars liefen auf Java 8; sie durch 2.x/3.x zu ersetzen, hat die Latte stillschweigend auf 17 gehoben.
  • Ein Build-Tool fixiert die Toolchain — Maven/Gradle, mit einer alten Toolchain konfiguriert, startet das eingebettete DynamoDB Local darunter.

So behebst du es

  1. Prüfe, was tatsächlich läuft:

    java -version
  2. Installiere eine Java-17+-Runtime (jede Distribution — Eclipse Temurin, Amazon Corretto usw.) und richte deine Shell darauf aus:

    export JAVA_HOME=/path/to/jdk-17
    export PATH="$JAVA_HOME/bin:$PATH"
    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
  3. Oder lass die lokale Java-Anforderung fallen — das Docker-Image liefert eine kompatible Runtime mit:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. Aktualisiere CI-Images und Toolchains — fixiere Java 17+ überall, wo DynamoDB Local startet (Test-Runner, Maven-/Gradle-Toolchains), sodass der Fehler nicht pro Maschine wieder auftaucht.

Sobald es auf Port 8000 bootet, richte dein Tooling auf http://localhost:8000 — die DynoTable-Desktop-App verbindet sich mit DynamoDB Local als First-Class-Endpoint, und der DynamoDB Expression Builder entwirft die Abfragen, die du dagegen ausführst.

Verwandte Fehler

References

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

DynoTable ist ein schneller Desktop-Client für DynamoDB — durchsuche Tabellen, führe SQL-artige Queries aus und bearbeite Items lokal.