DynamoDB Local: UnsupportedClassVersionError
TL;DR — 你的 Java 运行时比 DynamoDB Local 编译时所针对的更旧。当前的 DynamoDB Local(v2.6.0 及更新,包括 v3.x)要求 JRE 17+——在 Java 8/11 上启动它会使 JVM 以 UnsupportedClassVersionError 拒绝那些类文件。安装一个 Java 17+ 运行时(Temurin、Corretto……)并重新运行,或者用 amazon/dynamodb-local Docker 镜像完全跳过本地 Java。
含义
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这些数字解码出了不匹配:类文件版本 61 是 Java 17,52 是 Java 8。jar 的字节码针对的是比你 PATH 上的 java 更新的 JVM,因此 JVM 在 DynamoDB Local 运行一行代码之前就中止了。AWS 明确记载了下限:v2.6.0+ 不能在比 17 更旧的 JRE 上运行。
为什么会发生
- 系统
java仍然是 8 或 11——在较旧的 CI 镜像和多年前安装了 LTS JDK 的机器上很常见。 JAVA_HOME/PATH指向旧 JDK——安装了一个较新的 JDK,但 shell 先解析到了旧的那个。- DynamoDB Local 的一次升级越过了这个要求——1.x 的 jar 能在 Java 8 上运行;用 2.x/3.x 替换它们悄悄地把门槛提高到了 17。
- 一个构建工具固定了工具链——配置了旧工具链的 Maven/Gradle 会在其下启动嵌入式的 DynamoDB Local。
如何修复
检查实际运行的是什么:
java -version安装一个 Java 17+ 运行时(任意发行版——Eclipse Temurin、Amazon Corretto 等)并把你的 shell 指向它:
export JAVA_HOME=/path/to/jdk-17 export PATH="$JAVA_HOME/bin:$PATH" java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb或者放弃本地 Java 要求——Docker 镜像自带一个兼容的运行时:
docker run -p 8000:8000 amazon/dynamodb-local更新 CI 镜像和工具链——在 DynamoDB Local 启动的每一处都固定 Java 17+(测试运行器、Maven/Gradle 工具链),这样错误就不会在每台机器上再次出现。
一旦它在端口 8000 上启动,就把你的工具指向 http://localhost:8000——DynoTable 桌面应用把 DynamoDB Local 作为一等端点来连接,而 DynamoDB Expression Builder 会草拟你将对它运行的查询。
相关错误
- DynamoDB Local: unable to start process——Java 本身正确后的其他启动失败。
- DynamoDB Local: sqlite4java errors——原生库的兄弟问题。
- DynamoDB Local: port 8000 in use
- 学习: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)
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。