DynamoDB Local: UnsupportedClassVersionError
TL;DR — 你的 Java 執行環境比 DynamoDB Local 編譯所用的更舊。目前的 DynamoDB Local(v2.6.0 及更新,包括 v3.x)需要 JRE 17+** — 在 Java 8/11 上啟動它會讓 JVM 以 UnsupportedClassVersionError 拒絕這些 class 檔。安裝 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這些數字解碼了不符:class 檔版本 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。
- 建置工具釘住 toolchain — 以舊 toolchain 設定的 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 映像與 toolchain — 在任何 DynamoDB Local 啟動之處(測試執行器、Maven/Gradle toolchain)釘住 Java 17+,讓錯誤不會在每台機器上再次出現。
一旦它在連接埠 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 官方文件。