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 が1行でも実行する前に中止します。AWS は下限を明示的にドキュメント化しています: v2.6.0+ は 17 より古い JRE では動作しません。
発生する理由
- システムの
javaがまだ 8 か 11 — 古い CI イメージや、LTS JDK が何年も前にインストールされたマシンでよくあります。 JAVA_HOME/PATHが古い JDK を指している — 新しい JDK はインストールされているが、シェルが古い方を先に解決する。- DynamoDB Local のアップグレードが要件を越えた — 1.x の jar は Java 8 で動作しました。それらを 2.x/3.x に置き換えると、黙って下限が 17 に上がりました。
- ビルドツールがツールチェーンを固定している — 古いツールチェーンで構成された Maven/Gradle が、その下で組み込みの DynamoDB Local を起動する。
修正方法
実際に実行されているものを確認します:
java -versionJava 17+ ランタイムをインストールし(任意のディストリビューション — Eclipse Temurin、Amazon Corretto など)、シェルをそれに向けます:
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-localCI イメージとツールチェーンを更新します — DynamoDB Local が起動するあらゆる場所(テストランナー、Maven/Gradle ツールチェーン)で 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
- Learn: 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 ドキュメントに照らして確認しました。