DynamoDB Local: UnsupportedClassVersionError
En bref — Ton runtime Java est plus ancien que celui pour lequel DynamoDB Local a été compilé. Le DynamoDB Local actuel (v2.6.0 et plus récent, y compris v3.x) exige JRE 17+ — le lancer sur Java 8/11 fait refuser les fichiers de classe par la JVM avec UnsupportedClassVersionError. Installe un runtime Java 17+ (Temurin, Corretto, …) et relance, ou saute entièrement le Java local avec l'image Docker amazon/dynamodb-local.
Ce que ça signifie
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.0Les nombres décodent le décalage : la version de fichier de classe 61 est Java 17, 52 est Java 8. Le bytecode du jar cible une JVM plus récente que le java sur ton PATH, donc la JVM avorte avant que DynamoDB Local n'exécute une seule ligne. AWS documente le plancher explicitement : v2.6.0+ ne tourne pas sur des JRE antérieurs à 17.
Pourquoi ça arrive
- Le
javadu système est encore 8 ou 11 — courant sur les anciennes images CI et les machines où un JDK LTS a été installé il y a des années. JAVA_HOME/PATHpointent vers l'ancien JDK — un JDK plus récent est installé, mais le shell résout d'abord l'ancien.- Une mise à niveau de DynamoDB Local a franchi le prérequis — les jars 1.x tournaient sur Java 8 ; les remplacer par 2.x/3.x a silencieusement relevé la barre à 17.
- Un outil de build épingle la toolchain — Maven/Gradle configuré avec une ancienne toolchain lance le DynamoDB Local embarqué sous celle-ci.
Comment corriger
Vérifie ce qui tourne réellement :
java -versionInstalle un runtime Java 17+ (n'importe quelle distribution — Eclipse Temurin, Amazon Corretto, etc.) et pointe ton shell dessus :
export JAVA_HOME=/path/to/jdk-17 export PATH="$JAVA_HOME/bin:$PATH" java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDbOu abandonne le prérequis Java local — l'image Docker livre un runtime compatible :
docker run -p 8000:8000 amazon/dynamodb-localMets à jour les images CI et les toolchains — épingle Java 17+ partout où DynamoDB Local démarre (runners de test, toolchains Maven/Gradle), pour que l'erreur ne resurgisse pas par machine.
Une fois qu'il démarre sur le port 8000, pointe ton outillage vers http://localhost:8000 — l'application de bureau DynoTable se connecte à DynamoDB Local comme un endpoint de première classe, et le DynamoDB Expression Builder rédige les requêtes que tu exécuteras dessus.
Erreurs liées
- DynamoDB Local: unable to start process — d'autres échecs de démarrage une fois Java lui-même correct.
- DynamoDB Local: sqlite4java errors — le frère bibliothèque-native.
- DynamoDB Local: port 8000 in use
- Apprends : DynamoDB Local
Références
- 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)
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.