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.0Die 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-
javaist noch 8 oder 11 — häufig auf älteren CI-Images und Maschinen, wo vor Jahren ein LTS-JDK installiert wurde. JAVA_HOME/PATHzeigen 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
Prüfe, was tatsächlich läuft:
java -versionInstalliere 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 -sharedDbOder lass die lokale Java-Anforderung fallen — das Docker-Image liefert eine kompatible Runtime mit:
docker run -p 8000:8000 amazon/dynamodb-localAktualisiere 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
- DynamoDB Local: unable to start process — andere Startfehler, sobald Java selbst stimmt.
- DynamoDB Local: sqlite4java errors — das Native-Library-Geschwister.
- DynamoDB Local: port 8000 in use
- Learn: 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)
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.