DynamoDB Local: UnsupportedClassVersionError
TL;DR — Seu runtime Java é mais antigo do que aquele para o qual o DynamoDB Local foi compilado. O DynamoDB Local atual (v2.6.0 e mais novo, incluindo v3.x) requer JRE 17+ — lançá-lo no Java 8/11 faz a JVM recusar os arquivos de classe com UnsupportedClassVersionError. Instale um runtime Java 17+ (Temurin, Corretto, …) e rode novamente, ou pule o Java local inteiramente com a imagem Docker amazon/dynamodb-local.
O que 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.0Os números decodificam a incompatibilidade: a versão de arquivo de classe 61 é Java 17, 52 é Java 8. O bytecode do jar mira uma JVM mais nova do que o java no seu PATH, então a JVM aborta antes de o DynamoDB Local rodar uma única linha. A AWS documenta o piso explicitamente: v2.6.0+ não roda em JREs mais antigos que 17.
Por que acontece
- O
javado sistema ainda é 8 ou 11 — comum em imagens de CI mais antigas e máquinas onde um JDK LTS foi instalado anos atrás. JAVA_HOME/PATHapontam para o JDK antigo — um JDK mais novo está instalado, mas o shell resolve o legado primeiro.- Uma atualização do DynamoDB Local cruzou o requisito — os jars 1.x rodavam no Java 8; substituí-los por 2.x/3.x silenciosamente elevou a exigência para 17.
- Uma ferramenta de build fixa o toolchain — Maven/Gradle configurado com um toolchain antigo lança o DynamoDB Local embutido sob ele.
Como corrigir
Verifique o que está de fato rodando:
java -versionInstale um runtime Java 17+ (qualquer distribuição — Eclipse Temurin, Amazon Corretto, etc.) e aponte seu shell para ele:
export JAVA_HOME=/path/to/jdk-17 export PATH="$JAVA_HOME/bin:$PATH" java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDbOu elimine o requisito de Java local — a imagem Docker traz um runtime compatível:
docker run -p 8000:8000 amazon/dynamodb-localAtualize imagens de CI e toolchains — fixe Java 17+ onde quer que o DynamoDB Local inicie (test runners, toolchains do Maven/Gradle), para que o erro não ressurja por máquina.
Uma vez que ele inicialize na porta 8000, aponte suas ferramentas para http://localhost:8000 — o app desktop DynoTable conecta-se ao DynamoDB Local como um endpoint de primeira classe, e o DynamoDB Expression Builder esboça as consultas que você rodará contra ele.
Erros relacionados
- DynamoDB Local: unable to start process — outras falhas de inicialização quando o Java em si está certo.
- DynamoDB Local: sqlite4java errors — o irmão de biblioteca-nativa.
- DynamoDB Local: port 8000 in use
- Aprenda: DynamoDB Local
Referências
- 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)
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.