ある日突然、Forge を導入した Minecraft 1.7.2 のクライアントとサーバーが起動しなくなってしまった。
インターネットさんの力を借りて、なんとか解決したので備忘録がてらに載せます。

著者の環境は Windows 7 なので、この記事は Windows での解決方法になります。

SPONSERD LINK

お急ぎの人は、下部の解決方法をご覧あれ。

ランチャーでログインするまでは問題ない。
通常なら"Play"をクリックした後、Minecraft のウィンドウが作成され、タイトル画面が表示されるはずだけど、Minecraft のウィンドウが作成されない。

試しにバニラの Minecraft 1.7.2 を起動したところ、こちらは正常に起動した。
Forgeを導入した Minecraft 1.7.2 に問題があるようだ。

半べそになりながらインターネットを調べると、どうやら、Forge を導入した Minecraft 1.7.2 の起動に使用している JRE のバージョンが 8u** 以上だと起きる問題であることが分かった。

JRE(7u**)のインストール

もし、あなたが Java プログラマーでバージョン 7u** の JDK をインストールしているのであれば、該当のバージョンの JRE が既にインストールされている可能性が高い。

著者の環境では

C:\Program Files\Java\jdk1.7.0_71\jre

にインストールされていた。

後程、必要になるので、このパスを覚えておく。

JRE 単体でも過去のバージョンをインストールすることはできるのですが、JRE のアップデートの際にアンインストールを促され、アンインストールしてしまうことがあるので、この記事では、JDKに含まれる JRE をインストールする場合についての説明になります。

既に過去のバージョンの JDK をインストール済みの人は、次項まで飛ばしてね!

まず、Oracle US のサイトにアクセスする。

Oracle の US サイトの JDK(Java SE)のダウンロードページ
出典:Oracl eのUS サイトの JDK(Java SE)のダウンロードページ

“Java SE Downloads”の“Java Platform, Standard Edition”の中に“Java SE 8u**”があり、その下に“Java SE 7u**”がある。
その中の右側に"JDK"と"Server JDK"と"JRE"が縦に並んでいるので、"JDK"の下にある"DOWNLOAD"ボタンをクリックして次のページに進む。

Oracle の US サイトの Java SE Development Kit 7u71 のダウンロードページ
出典:Oracle の US サイトの Java SE Development Kit 7u71 のダウンロードページ

JDK をダウンロードするには、記載されているライセンス文(英語)を確認して、同意する必要がある。

ライセンスに同意するなら、Accept License Agreement のラジオボックスをチェックする。

すると、インストーラーへのリンクが表示されるので、使っている PC の OS に合わせたものをダウンロードする。

Windows(32 Bit 版)→ jdk-7u**-windows-i586.exe
Windows(64 Bit 版)→ jdk-7u**-windows-x64.exe

ダウンロードが完了したらインストーラーを実行し、JDK をインストールする。

インストール先のパスは、後程、必要になるので覚えておく。

クライアント

Minecraftのランチャーを起動し、ログインする。

左下の“Edit Profile”をクリックすると、“Profile Editor”のダイアログが表示される。

ダイアログの下部にある“JavaSettings (Advanced)”の“Executable”のチェックボックスをチェックし、すぐ右のテキストボックスに下記のように入力する。

[JRE(7u**)のインストール先のパス]\bin\javaw.exe

例として、7u71 の JDK に含まれる JRE を使用する場合は

C:\Program Files\Java\jdk1.7.0_71\jre\bin\javaw.exe

となる。

下記のスクリーンショットのような感じになる。

Minecraftの“Profile Editor”のダイアログ
出典:Minecraftの“Profile Editor”のダイアログ

右下の“Save Profile”をクリックし、設定を保存する。

これでクライアントが正常に起動されるようになった。

サーバー

サーバー用のランチャーはないので、コマンドプロンプトやバッチファイル等で使用する JRE を指定してサーバーを起動する必要がある。
バッチファイルから起動する方が楽なので、この記事ではその方法を載せるよ。

Forge 導入済みのサーバー用の JAR ファイルが保存されているパスにテキストファイルを作る。
テキストファイルの名前は任意ですが、拡張子は“.bat”にする。

作ったテキストファイルを“メモ帳”等のテキストエディタで開く。

サーバーの GUI を表示する場合は

"『JDK(7u**)のインストール先のパス』\bin\javaw.exe" -jar forge-1.7.2-10.12.2.1121-universal.jar -o true

GUI を表示せず、コマンドプロンプトを使用する場合は

"『JDK(7u**)のインストール先のパス』\bin\java.exe" -jar forge-1.7.2-10.12.2.1121-universal.jar -o true nogui

とテキストファイルに入力する。

『JDK(7u**)のインストール先のパス』 の部分は、クライアントのランチャーで設定したのと同じ JRE のパスになる。

GUI を表示しない場合、javaw.exe ではなく java.exe と入力しないと GUI もコマンドプロンプトに何も表示されず、まともにサーバーを停止するのも困難になるので注意。管理者権限を持ったプレイヤーがクライアントからサーバーコマンドで停止するか、最悪の場合、タスクマネージャーから強引に javaw.exe のプロセスを終了させ、停止するしかなくなる。後者の手段は、ワールドが巻き戻る可能性がある。

forge-1.7.2-10.12.2.1121-universal.jar の部分は、起動する Forge 導入済みのサーバー用の JAR ファイルの名前に読み替える。

著者は

"C:\Program Files\Java\jdk1.7.0_71\jre\bin\java.exe" -Xms4G -Xmx4G -XX:PermSize=512M -XX:MaxPermSize=512M -jar forge-1.7.2-10.12.2.1121-universal.jar -o true nogui

としている。

オプションについては、こちらの記事を参照して下さい。

-Xms4G-Xmx4G は、それぞれ、Java VM に jar ファイルを実行する為に確保する最小のメモリーサイズと最大のメモリーサイズを指定している。この例では、Minecraft のサーバーの為にメモリを 4 GB(4096 MB)確保している。
ワールドにモブが増えすぎてサーバーが起動しなくなったり、頻繁にクラッシュしたりするようになった場合、このオプションを使い、確保するメモリーサイズを増やすことで正常に起動させることができる。
著者は、牛を増やしすぎてサーバーが起動しなくなったことがあったが、確保するメモリーサイズを例のとおり 4 GB(4096 MB)に増やしたところ、正常に起動できるようになった。

クライアントの起動オプションに使っていた -Xincgc は、サーバーでは使えない。起動するが、無視される。

作ったバッチファイルを実行すると、Forge が導入された Minecraft のサーバーが正常に起動する。

解決

なんとかクライアント、サーバー共に起動できるようになって、良かった良かった。