Nukkitを使ってみたけどエラーが出てきて、うわああああああああああああ!となってしまったこと、一度はありますよね。

今回はそんな「うわああああああああああああ!」と一緒に戦っていきましょう!

※How to Nukkit! #1の続きとなります。読んでいない方は先にそちらをお読みください。

エラー(例外)文を読んでみよう!

例えば、以下のエラーが発生したとします。

java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
    at java.util.ArrayList.RangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at Main.execute(Main.java:29)
    at Main.main(Main.java:19)

このエラー文から、以下のことがわかります。

  • 例外名:IndexOutOfBoundsException
  • 例外内容:サイズが3のリストの3番目の値を取得しようとした
  • 発生箇所:Mainクラスのexecuteメソッド、29行目

このようにエラー文を見ただけで、エラーの内容が大体わかってしまうのがJavaの特徴であり、PHP(pmmp)のエラー文にはないところです。

さて、どのように読めばエラーの内容がわかるかを、ここでポイントとして示しておきます。

エラー文解析のポイント!

  • 1行目の~~~Exceptionはエラー(例外)の名前
  • エラー名に続くメッセージはエラーの内容
  • エラー文で出てくる~~~.java: XXの~~~はクラスファイル名、XXはエラーを起こしている行数
  • エラーは下の行からそのエラーを起こしている処理までの過程が順番に書かれている(メソッド単位で)→自分で定義したクラスの最上位行数で示されているエラーが該当箇所!

主なエラー(例外)

IndexOutOfBoundsException

主にリスト系で範囲外の値を参照しようとした際に起こる例外。

ArrayIndexOutOfBoundsException

主に配列で範囲外の値を参照しようとした際に起こる例外。

NullPointerException

null(何もない)値を参照しようとした際に起こる例外。

NoClassDefFoundError

参照しようとしたクラスが存在しない場合に起こるエラー。主にNukkitでは、プラグインが必要としているライブラリがない場合に起こりやすい。

NoSuchMethodError

参照しようとしたメソッドが存在しない場合に起こるエラー。主にNukkitではプラグインが古く、プラグインが要求している処理がNukkitから削除されてしまった場合に起こりやすい。


 

これらはプラグイン開発をしていなくても、使用しているプラグインのバグ、あるいはNukkitのバグでも十二分に発生しうることなので、ぜひとも心得ておきましょう。

特に一行目のエラー名をGoogle先生に聞くだけでも、エラーの概要はつかむことができます。

ですが、それでもわからないエラーは山ほどあります。そんな時には遠慮なく我々開発者を頼ってください。しっかりと対応します。

次回はこれを踏まえて「プラグイン開発」について紹介していこうと思います。お楽しみに。

 

Itsu

Java/Kotlinを使う高校一年生。

プラグイン開発やソフトウェア開発をやっている人。