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

Les 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 java du 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/PATH pointent 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

  1. Vérifie ce qui tourne réellement :

    java -version
  2. Installe 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 -sharedDb
  3. Ou abandonne le prérequis Java local — l'image Docker livre un runtime compatible :

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

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.