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.0I 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
javadi sistema è ancora 8 o 11 — comune su immagini CI vecchie e macchine dove un JDK LTS è stato installato anni fa. JAVA_HOME/PATHpuntano 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
Controlla cosa è effettivamente in esecuzione:
java -versionInstalla 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 -sharedDbOppure elimina il requisito Java locale — l'immagine Docker include un runtime compatibile:
docker run -p 8000:8000 amazon/dynamodb-localAggiorna 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
- DynamoDB Local: unable to start process — altri fallimenti di avvio una volta che Java stesso è corretto.
- DynamoDB Local: sqlite4java errors — il fratello libreria-nativa.
- DynamoDB Local: port 8000 in use
- Impara: 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)
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.