Bukkit Spigot Japan Wikiは、Hello Minecraftを応援しています。

超まいくらひろば2017バナー

 

 

サーバーの問題解決

提供: Bukkit Spigot Japan Wiki
移動: 案内検索

サーバーの問題解決について

サーバー運営では様々な問題が生じます。
例えば、サーバーのエラー、プラグインのエラー、ネットワークの問題、それだけではなく迷惑行為など多種多様な問題が生じます。
ここではそれらの問題解決への手助けやそのための情報を掲載しています。

問題の切り分けおよび解決

まずは問題が起こった経緯を考えてください。
何か特別な、変わったことをしていないか。
そして、何が原因でその問題が起こっているのかを突き詰めていきます。
理論的に考えて一歩ずつ、初歩的な問題から踏まえて、問題を多方面から分析して、問題の核心を見つけて下さい。
エラーログなどがあるとより判明しやすいです。

そこからその状況をGoogle検索などで調べてください。
特にエラーログが出ていれば、そのエラーログで検索すれば、世界中の情報の同様のものから解決策を探すことができます。
エラーログについては#エラーログの読み方#よくあるエラーログを確認してください。

なお、それでも解決方法が分からなければ、非公式日本ユーザーフォーラムを利用してください。
サーバーのことであれば、質問: マルチサーバー運用 - 非公式日本ユーザーフォーラムなどを利用すると解決策が提示される場合があります。
ただし、フォーラムを利用する際は、下記のルールをしっかり読んで、それに適応した質問方法で投稿してください。
質問方法が悪ければ、回答がつかないことはもちろん、もしかしたら永久的に使用できない可能性があります。
ただし、100%答えが返ってくることがないことは念頭に置いておいて下さい。

よくある質問

サーバーを運営する上でよく質問される内容をまとめたものです。

  • サーバーファイルダウンロードしたら拡張子がzipになってたんだけど?
    拡張子をjarに変更して下さい。それでほぼ問題は起こりません。


  • exe版からjar版にしたいんだけどどうすればいい?
    exe版とjar版に差異はほとんどないため、サーバーの実行ファイルをjar版に置き換えるだけでよいです。(起動用スクリプトを作成する必要はありますが)


  • 相手が接続できないんだけど?
    ポート開放は済んでいますか?ファイアーウォールは適切に設定していますか?各環境で設定方法が違うため、それぞれ各自で検索して下さい。


  • サーバーを拡張出来ないの?
    可能です。例えばマルチ版のMODを利用したり、Bukkitプラグインというものを使用することで可能です。


  • BukkitプラグインとかMOD入れたいんだけど?
    Bukkitプラグインであれば、Spigotというカスタムサーバーを使用することで、可能です。


  • サーバーを「たてる」の漢字って立てる、建てるどちらですか?
    サーバーを建てるが意味的に正しいです。(参考元:サーバーを立てるor建てる?)


  • 「配布ワールド」もしくは「クライアントのワールド」をサーバーに持ってきたいんだけど?
    まず、クライアントのバージョンと同じバージョンのサーバーを建てて下さい。そしてクライアントのワールド(場所については各自調べて下さい)を、サーバーのjarがある場所へコピーして下さい。
    次に、サーバー内のworldフォルダ(設定変更していない場合)を削除し、クライアントのワールドの名前をworldにするか(設定変更しない場合)、server.properties内のlevel-nameを持ってきたいクライアントのワールドの名前に変更(設定変更する場合)し、起動して入ったらそのワールドであったら成功です。


  • 配布ワールドが上手く動かないんだけど?
    基本的に配布ワールドはバニラサーバーで動かして下さい。また、server.properties内のenable-command-blockをtrueにすることで解決する場合が殆どです。
    しかし、各配布ワールドによってMOD導入等が必要だったりする場合があるため、配布サイトで確認して下さい
    なお、CraftBukkit/Spigotで上手く動作しないコマンドを使ってる場合に上手く動かないこともあります。



  • ハードコアモードからの復活って可能ですか?
    可能です。上記のserver.propertiesでの設定変更に記載されていますが、
    "/world/players/プレイヤー.dat"を削除後、"/pardon プレイヤー"コマンドを入力する事で可能です。


  • 数字だけのアドレスじゃなくて英数字のアドレスとかに出来ないの?, IPアドレスが変わって面倒なんだけど、どうすればいいの?
    変動するIPをドメインに変換するサーピス(DDNS)を用いる事で可能です。
    詳細はDDNSで検索して調べましょう。


  • どこで質問したら良いの?
    Wikiでは質問を受け付けていません。非公式日本ユーザーフォーラムを使って下さい。ただし使う際はルールを守って質問をして下さい(上記確認)。


エラーログの読み方

何かしら起きた時に、エラーログを読むことで解決できることが多いです。
ここでは、エラーログの読み方、よくあるエラーログとその解決法を説明します。
基本的にエラーログは、大体英文のメッセージを読むことでわかります。
それではエラーログを読む前に、エラーの出ていないただのログを読んで下さい。

[13:23:44] [Server thread/INFO]: Starting minecraft server version 1.7.10
[13:23:44] [Server thread/INFO]: Loading properties
[13:23:44] [Server thread/INFO]: Default game type: SURVIVAL
  • "[13:23:44]"は時刻です。
  • "[Server thread/INFO]"はメッセージがどんなものなのかを表しています。
    ┗"Server thread/"の後は、INFOであればそのまま情報、WARNであれば警告、ERRORはエラーを示しています。

その後ろの様々なメッセージはそれぞれを翻訳することで理解できるはずです。一切翻訳できないのならばサーバー運営は諦めるほうが懸命です。
ですが、Google翻訳エキサイト翻訳を用いることで簡単に行なえます。

ログからエラーログを見つけるには、"[Server thread/WARN]"や"[Server thread/ERROR]"をテキストエディターの検索機能などで検索することで見つけられます。
なお、Googleなどで検索をする時は、"[13:23:44]"などの時刻の部分を必ず消して検索してください。
時刻を検索に入れると、有用な検索結果が出ないためです。

よくあるエラーログ

ここでは、サーバーやJava等から出力されるエラーログ、またその解決方法を掲載しています。
全ての問題に対応しているわけではないため、解決しなければ非公式日本ユーザーフォーラムを利用して下さい。

javaは内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません

環境変数PATHが設定されていません。設定方法については調べてください。
または、javaの部分をjava.exeのパスに置き換えてください。
例:java→"C:\Program Files\Java\jre8\bin\java.exe"
それぞれのJavaのバージョンなどでインストール場所が異なると正しく実行できないため、各自で確認して下さい。
(Windowsのエラー)

Error: Unable to access jarfile <ファイル名>

こちらは、<ファイル名>のファイルにアクセスが出来なかった時に表示されるエラーです。
解決策は、<ファイル名>を正しい物に編集して起動すること、もしくは権限を正しく設定することです。
(Javaのエラー)

VM Initial heap size set to a larger value than the maximum heap size(起動用スクリプトで設定したメモリの値がおかしい)

Error occurred during initialzation of VM Initial heap size set to a larger value than the maximum heap size

起動用スクリプトに記載されているJVMの引数の内、-Xmsが最小値、-Xmxが最大値の指定ですが、
最小値が最大値を超えているとエラーが出ます。
解決するには最小値を小さくして下さい。
(Javaのエラー)

UnsupportedClassVersionError(Javaのバージョンが合っていない)

Could not load 'plugins\xxx.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError

"UnsupportedClassVersionError"というエラーは、Javaのバージョンが合っていない事を示しています。
ですので、配布場所に書かれているJavaのバージョンを使用、もしくは最新、最新の一個前にして起動して下さい。
(CraftBukkit/Spigotのエラー)

UnknownDependencyException(前提プラグインが抜けている)

Could not load 'plugins\xxx.jar' in folder 'plugins'
org.bukkit.plugin.UnknownDependencyException: <プラグイン名>

"UnknownDependencyException: <プラグイン名>"というエラーは、前提プラグインの"<プラグイン名>"が無いという事を示しています。
ですので、出たエラーの要求されている前提プラグインや配布場所に書かれている前提プラグインを検索し、導入して起動して下さい。
(CraftBukkit/Spigotのエラー)

**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!

**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
The server will make no attempt to authenticate usernames. Beware.
While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose.
To change this, set "online-mode" to "true" in the server.properties file.

読んで分かる通り、サーバーがオフライン状態であることを示しています。
server.properties内のonline-modeをtrueにすることで解決します。
(なお、BungeeCordを導入/構築している場合は無視して構いません)
(サーバーのエラー)

**** FAILED TO BIND TO PORT!

[Server thread/WARN]: **** FAILED TO BIND TO PORT!
[Server thread/WARN]: The exception was: java.net.BindException: Address already in use: bind
[Server thread/WARN]: Perhaps a server is already running on that port?

ポートを使用できなかった時に出るエラーです。
基本的に、既に何かしらのソフトがポートを使っている時に出ます。
最も考えうる原因はサーバーの多重起動です。タスクマネージャー等からサーバーが他に起動していないかを確認してみてください。
サーバーらしきものがない場合は、サーバー機を再起動してください。
それでもダメならば、Windowsであれば以下のコマンドを使ってどのソフトがポートを使っているかを調べることが出来ます。

netstat -aon | find "<ポート番号>"

例として、netstat -aon | find "25565"を実行すると、以下のように出ます。

 TCP    0.0.0.0:25565          0.0.0.0:0              LISTENING       1124
 TCP    [::]:25565             [::]:0                 LISTENING       1124

一番右の1124(それぞれによって変動します)と書かれているものがPID(プロセスID)となるため、タスクマネージャーの詳細から調べ、消すことが出来ます。 コマンドプロンプトから消す場合は、

taskkill /PID <PID(プログラムID)>

成功すると、

SUCCESS: The process with PID <PID(プログラムID)> has been terminated.

失敗すると、

ERROR: The process with PID <PID(プログラムID)> could not be terminated.
Reason: This process can only be terminated forcefully (with /F option).

失敗した時は、

taskkill /F /PID <PID(プログラムID)>

で強制終了して下さい。
それでもダメならば、server.propertiesから使うポートを変更して下さい。

なお、server.properties内のserver-ipにおかしな記述をしていても起こることがあります。
その場合は、server-ipに何も書かないことで解決する場合が多いです。
(サーバーのエラー)

UnknownHostException(server-ip=に無意味に記述してしまっている)

[Server thread/ERROR]: Encountered an unexpected exception
java.net.UnknownHostException: <server-ip=の後に書いた文字列>
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[?:<Javaのver>]
at java.net.InetAddress$2.lookupAllHostAddr(Unknown Source) ~[?:<Javaのver>]
 (中略)
at java.lang.Thread.run(Unknown Source) [?:<Javaのver>]
[Server thread/ERROR]: This crash report has been saved to: クラッシュレポートの保存先

server-ip=に無意味な記述をすると、上記のようなエラーが出ます。
ですのでserver.properties内のserver-ip=を空欄にしているかを確認して下さい。
(サーバーのエラー)

java.io.IOException: ハンドルが無効です。(jarから直接、起動している)

[時刻 ERROR]: Exception handling console input
java.io.IOException: ハンドルが無効です。
at java.io.FileInputStream.readBytes(Native Method) ~
at java.io.FileInputStream.read(Unknown Source) ~[?:Javaのver]
at java.io.BufferedInputStream.read1(Unknown Source) ~[?:Javaのver]
at java.io.BufferedInputStream.read(Unknown Source) ~[?:Javaのver]
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) ~[?:Javaのver]
at sun.nio.cs.StreamDecoder.implRead(Unknown Source) ~[?:Javaのver]
at sun.nio.cs.StreamDecoder.read(Unknown Source) ~[?:Javaのver]
at java.io.InputStreamReader.read(Unknown Source) ~[?:Javaのver]
at java.io.BufferedReader.fill(Unknown Source) ~[?:Javaのver]
at java.io.BufferedReader.readLine(Unknown Source) ~[?:Javaのver]
at java.io.BufferedReader.readLine(Unknown Source) ~[?:Javaのver]
at lb$2.run(SourceFile:94) [minecraft_server.x.x.x.jar:?]

このエラーはjar版のサーバーを直接実行しGUIで起動している時に出されるエラーです。
基本的にサーバー実行に支障は出ないので無視して構いません。
解決は起動用スクリプトを参考に書き直し、起動することで可能です。

To start the server with more ram(サーバーを起動するためのメモリ割り当てが足りない)

[時刻 WARN]: To start the server with more ram, launch it as "java -Xmx1024M -Xms1024M -jar minecraft_server.jar"

単純に割り当てが足りていない。もしくは割り当てしていない時にエラーを吐きます。
解決はスクリプトファイルの記述で1024M(1G)以上割り当てることで可能です。
(サーバーのエラー)

The specified size exceeds the maximum representable size.(指定されたメモリは確保できない)

Invalid initial heap size: -Xms*G
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

このエラーは基本的に32bitのJavaでサーバーを実行し、なおかつ4GB以上の割り当てを行うと出るエラーです。
解決は、下記の「Could not reserve enough space for *******KB object heap(1GB以上を割り当てられない)」と同様に、
64bitのJavaで実行することで可能です。詳細は下記を確認してください。
(Javaのエラー)

Could not reserve enough space for *******KB object heap(1GB以上を割り当てられない)

Error occurred during initialization of VM
Could not reserve enough space for *******KB object heap

このエラーはJavaが割り当てするためのスペースが無い時に出るエラーです。
基本的にJavaの32bit版を使っているために起こることが多いです(32bit版では1GB(OS上限の1/4?)しか使えないと思われる)。
64bit版のJavaをインストールし、64bit版のJavaで実行することで解決します(上記のを参照して下さい)。
(Javaのエラー)
参考:
Minecraftマルチ鯖起動エラー解説 Error occurred during initialization of VM|マロンのブロマガ
Minecraftの1.7.4のサーバーでメモリの割り当てがきちんとできない。|非公式フォーラム

*** Error, this build is outdated ***

*** Error, this build is outdated ***
*** Please download a new build as per instructions from https://www.spigotmc.org/ ***
*** Server will start in 15 seconds ***

このエラーはSpigotにおいて、最新ではないバージョンを使用していると出るエラーです。
これは、新バージョンで既に修正されたバグなどを報告をする人があまりにも多かったために、現在のSpigotでは開発チームが推奨しないバージョンを使用するとこのようなエラーが表示されます。
解決は、エラーに書かれているように15秒後に起動するのを待つか、新しいバージョンに上げることで表示されなくなります。

参考

非公式日本ユーザーフォーラムより、
【質問禁止】クラッシュレポートを読む方法 (2013/11/15更新)
【質問する前に】クラッシュ・エラーの原因と対処法の調べ方(基本編)
(これらは、本来クライアント用ですが、似ているものが多いので参考にしています)
【質問する人は読んで下さい】質問方法のガイドライン【マルチサーバー運用】

迷惑行為の対策

サーバーを公開している以上、迷惑行為を受けることはほぼ必然的となります。
昨今では小中学生でもMinecraftは遊ばれるため、様々な対策が必須となっています。

迷惑行為を防止する

ホワイトリストを使う

Minecraftサーバーの標準機能であるホワイトリストを使えば、サーバー管理者が指定したユーザーのみをログインできるように設定できます。
特定の友達と遊ぶ場合等ではこの機能を有効にする事をおすすめします。
設定はとても簡単です。サーバーコマンドにあるwhitelist onを実行すればすぐに有効にできます。
詳細な設定は上記ページを見て下さい。

プラグインを使う

SpigotやCraftBukkitサーバーで使えるプラグインを使えば迷惑行為を事前に防止する事ができます。
例えばWorldGuardを使えばユーザーが自分の土地を保護する事ができますし、LWCを使えばユーザーが自分の設置したチェストを保護する事ができます。
迷惑行為対策に有効なプラグインはプラグインリストにまとめてあります。