エラーメッセージには、答えがすでに入っている。そこに class file version 65.0 と出ているなら、そのファイルは Java 21 を要求している。計算はいつも同じで、数字から44を引くとJavaバージョンになる。ただし数字以上に大事なのは、誰のファイルが指されているかだ。多くの場合、サーバーが古すぎるのではなく、単一のPluginが新しすぎる。

メッセージの読み方

典型的な行はこう見える。

java.lang.UnsupportedClassVersionError: com/example/PluginMain has been compiled by a more
recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime
only recognizes class file versions up to 61.0

ここには3つの情報が含まれている。

  1. com/example/PluginMain — エラーを起こしているもの。ここにPlugin名やMod名が出ているなら、その1つのファイルが合っていないだけで、サーバー自体は問題ない。
  2. class file version 65.0 — 何が必要か。65 − 44 = Java 21
  3. only recognizes … up to 61.0 — 何で動いているか。61 − 44 = Java 17

つまり、Java 21向けに作られたPluginが、Java 17で動いているサーバーに入っているということだ。

換算表

class file version Javaバージョン
52.0 Java 8
55.0 Java 11
60.0 Java 16
61.0 Java 17
65.0 Java 21
69.0 Java 25

この数字は公式のJVM仕様に基づいている。44という差はJava 1.0からずっと一定なので、表を増やさなくても今後のバージョンを自分で計算できる。

覚えておこう: Javaランタイムは常に古いクラスファイルバージョンを理解できるが、新しいものは絶対に理解できない。だからJava 8向けPluginはJava 21で問題なく動くが、その逆はあり得ない。

どのMinecraftバージョンにどのJavaバージョンが必要?

Minecraftバージョン 必要なJava
1.16.5まで Java 8
1.17 – 1.17.1 Java 16(実用上はJava 17)
1.18 – 1.20.4 Java 17
1.20.5以降 Java 21
26.0以降 Java 25

game-serverhostingでは、君がこれを設定する必要はない。 サーバーのMinecraftバージョンからランタイムを判断し、自動で設定する。1.21を注文すれば、スイッチを探さなくてもJava 21になる。

LeafやLeavesのようなサーバーフォークについては、一般ルールをそのまま使うのではなく、Releaseごとに正確な対応表を管理している。理由は、フォークがVanillaの要件から外れることがあるからだ。楽観的な推測は、いちばん大事な場面で外れる。ある組み合わせに合うJavaが見つからない場合は、低すぎるランタイムで起動するのではなく、意図的に処理を止める。間違った状態で半分だけ動くサーバーより、最初から誤起動しないサーバーのほうが直しやすい。

いちばん多いケース: サーバーではなくPlugin

さっきまでサーバーが動いていて、ファイルを追加した直後にエラーが出たなら、原因はかなりはっきりしている。手順はこうだ。

  1. メッセージ内のクラス名をメモする。 ほぼ必ずプロジェクト名の手がかりになる。
  2. 配布元で合うBuild版を探す。 多くのPluginはJava 17用とJava 21用の別Downloadを用意しており、-java17 のような追記や専用Releaseブランチがあることも多い。最新ファイルが自動的に正解とは限らない。
  3. 合う版がない場合は、より新しいMinecraftバージョンが必要だ。新しいランタイムは、そのMinecraftバージョンによって初めて付いてくる。ワールドを失わずにバージョンを変える方法は、Minecraftサーバーのバージョンを変更するにある。
  4. サーバーを急いで動かす必要があるなら、Pluginをいったん外す。 Pluginをきれいに追加・削除する方法は、MinecraftのModsとPluginsをインストールするで説明している。

もう一つのケース: Javaが新しすぎる

このケースはあまり説明されないが、実際にはよく起きる。古いForge Modpack、典型例は1.12.2だが、これは Java 8 向けに作られている。Java 21では失敗する。ただし多くの場合、UnsupportedClassVersionError ではなく、存在しない内部クラスや拒否された起動パラメータに関するメッセージが出る。

見分け方: そのPackは以前は動いていた、または他の環境では動く。そして君のサーバーがかなり古いMinecraftバージョンを示している。この場合の解決策は新しいJavaではなく、そのPackに対応するMinecraftバージョンをPanelで選ぶことだ。そうすれば、対応する古いランタイムを設定する。

正直な注意: このケースでは自動修正は働かない。自動修正は「古すぎる」方向、つまりサーバーが現在のランタイムより新しいJavaを必要としている場合だけを直す。新しすぎるJavaは意図的にDrift扱いしない。そうしないと、意図して古いランタイムを選んだユーザーが、自動でまた失ってしまうからだ。

game-serverhostingが自動で引き受けること

  • 注文時点から適切なランタイム。 JavaバージョンはMinecraftバージョンに従い、設定は不要。
  • バージョン変更時の修正。 より高いJava要件を持つバージョンへ変更すると、ランタイムも追従する。
  • Boot Logは計算より優先。 起動時にサーバー自身が現在より高いJavaバージョンを必要としていると言った場合、注文されたバージョンからの推測ではなく、その測定結果に基づいて修正する。サーバー自身の自己申告は、どんな表より信頼できる。
  • 独自Imageは触らない。 君が自分で選んだランタイムでサーバーを動かしている場合、こちらでは介入しない。
  • 半端に正しいよりFail-closed。 ある組み合わせに合うJavaが存在しない場合、間違ったランタイムで起動するのではなく、処理を止めて通知する。

Troubleshooting

症状 確認 解決策
class file version 65.0 と出ていて、クラス名がPlugin 追加前はサーバーが動いていた? 君のMCバージョン用のPlugin Buildを入れる
サーバー起動直後にエラー、Plugin名なし どのMinecraftバージョンが動いている? バージョンとランタイムを揃える
古い1.12.2 Modpackが起動しない Logに内部クラス不足が出ている? Javaが新しすぎる — 合うMCバージョンを選ぶ
バージョン変更後にエラー 変更直後に起きた? 再起動を待つ。残る場合は完全な行を添えてSupportに連絡する
Pluginは読み込まれるが機能がない Logにエラーではなく警告がある? 別の原因 — Javaバージョンではない

FAQ

Javaバージョンを自分で切り替えられる?

game-serverhostingでは必要ない。サーバーのMinecraftバージョンから自動的に決まる。別のランタイムが必要なら、正しい方法はMinecraftバージョンを変更することだ。そうすれば環境全体が合う。

新しいJavaは常に良い?

いいえ。Minecraftでは、要求されるバージョンが実用上の上限でもある。サーバーコア、Mods、Pluginsはそのバージョンに合わせられている。「念のため」に高いランタイムへ飛ばしても利点はなく、古いModsを壊す。

ローカルではPluginが動くのに、サーバーでは動かないのはなぜ?

君のローカルJavaインストールが、サーバーのものより新しい可能性があるからだ。重要なのはサーバー上のランタイムであって、君のPC上のものではない。

サーバーが今どのJavaで動いているか、どう分かる?

メッセージが教えてくれる。only recognizes class file versions up to 61.0 はJava 17という意味だ。エラーメッセージがない場合、サーバー起動時の最初のコンソール行にJavaバージョンが表示される。

Javaを変えたらワールドを作り直す必要がある?

いいえ。ランタイムは実行にだけ関係し、ワールド形式には関係しない。一方で Minecraftバージョン の変更はワールド形式を変えることがある。事前にBackupを作っておこう。

次のステップ

サーバーはまた動くようになったが重い場合は、Minecraftサーバーがラグる: Watchdog Timeoutを直すが役に立つ。メモリがModpackの規模に合っていない場合は、Minecraft RAM計算機で必要量を計算できる。

Javaバージョンがゲームバージョンに自動で合うサーバーを探している? Minecraftサーバーをレンタルで料金プランを見られる。

出典と検証環境

検証環境: 2026年8月24日。新しいMinecraftバージョンでは新しいJava要件が追加される可能性がある。リンク先の出典がそれぞれ最新の状態だ。