DynamoDB Local: UnsupportedClassVersionError

In breve — Il tuo runtime Java è più vecchio di quello per cui DynamoDB Local è stato compilato. DynamoDB Local attuale (v2.6.0 e successive, incluse le v3.x) richiede JRE 17+ — avviarlo su Java 8/11 fa sì che la JVM rifiuti i file di classe con UnsupportedClassVersionError. Installa un runtime Java 17+ (Temurin, Corretto, …) e riavvialo, oppure salta del tutto Java locale con l'immagine Docker amazon/dynamodb-local.

Cosa significa

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

I numeri decodificano il disallineamento: la versione del file di classe 61 è Java 17, 52 è Java 8. Il bytecode del jar punta a una JVM più recente del java nel tuo PATH, quindi la JVM si interrompe prima che DynamoDB Local esegua una sola riga. AWS documenta il limite esplicitamente: v2.6.0+ non gira su JRE più vecchie della 17.

Perché accade

  • Il java di sistema è ancora 8 o 11 — comune su immagini CI vecchie e macchine dove un JDK LTS è stato installato anni fa.
  • JAVA_HOME/PATH puntano al vecchio JDK — è installato un JDK più recente, ma la shell risolve prima quello legacy.
  • Un aggiornamento di DynamoDB Local ha superato il requisito — i jar 1.x giravano su Java 8; sostituirli con quelli 2.x/3.x ha alzato silenziosamente l'asticella a 17.
  • Uno strumento di build fissa la toolchain — Maven/Gradle configurati con una vecchia toolchain avviano il DynamoDB Local incorporato sotto di essa.

Come correggerlo

  1. Controlla cosa è effettivamente in esecuzione:

    java -version
  2. Installa un runtime Java 17+ (qualsiasi distribuzione — Eclipse Temurin, Amazon Corretto, ecc.) e punta la tua shell su di esso:

    export JAVA_HOME=/path/to/jdk-17
    export PATH="$JAVA_HOME/bin:$PATH"
    java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
  3. Oppure elimina il requisito Java locale — l'immagine Docker include un runtime compatibile:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. Aggiorna immagini CI e toolchain — fissa Java 17+ ovunque DynamoDB Local si avvii (test runner, toolchain Maven/Gradle), così l'errore non si ripresenta per macchina.

Una volta avviato sulla porta 8000, punta il tuo tooling su http://localhost:8000 — l'app desktop DynoTable si connette a DynamoDB Local come endpoint di prima classe, e il DynamoDB Expression Builder abbozza le query che eseguirai su di esso.

Errori correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.