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 を起動する。

修正方法

  1. 実際に実行されているものを確認します:

    java -version
  2. Java 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
  3. またはローカルの Java 要件を外します — Docker イメージは互換性のあるランタイムを同梱しています:

    docker run -p 8000:8000 amazon/dynamodb-local
  4. CI イメージとツールチェーンを更新します — DynamoDB Local が起動するあらゆる場所(テストランナー、Maven/Gradle ツールチェーン)で Java 17+ を固定し、マシンごとにエラーが再発しないようにします。

ポート 8000 で起動したら、ツールを http://localhost:8000 に向けます。DynoTable デスクトップアプリ は DynamoDB Local に第一級のエンドポイントとして接続し、DynamoDB Expression Builder はそれに対して実行するクエリの下書きを作成します。

関連するエラー

References

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。