JavaのNoSuchMethodErrorエラーについて
Javaのプログラミングにおいて、"NoSuchMethodError"というエラーが発生することがあります。
これは、呼び出そうとしたメソッドが存在しないときに発生します。特に、ライブラリのバージョン違いなどで呼び出すメソッドが存在しない場合や、メソッド名を間違えて入力した場合によく見られます。

そうなんです。
メソッド名を正確に入力していても、他の原因でNoSuchMethodErrorが発生することがあります。それでは、実際のエラーが発生するソースコードとその対処法を見てみましょう。
Javaのエラー一覧はコチラ
-
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る
ケース1: メソッド名のスペルミス
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 |
public class HelloWorld { public static void main(String[] args) { printtHello(); } public static void printHello() { System.out.println("Hello World!"); } } |
出力結果
NoSuchMethodError: printtHello
このケースでは、メソッド名を間違えて入力しています。
正しくは"printHello"ですが、"printtHello"と誤って入力しています。そのため、NoSuchMethodErrorが発生しています。

対処後のソースコード
1 2 3 4 5 6 7 8 9 |
public class HelloWorld { public static void main(String[] args) { printHello(); } public static void printHello() { System.out.println("Hello World!"); } } |
出力結果
Hello World!
この対処法は単純です。
メソッド名を正しく修正してあげましょう!
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版

ケース2: メソッドの引数の間違い
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 |
public class HelloWorld { public static void main(String[] args) { printHello("Hello World!", 123); } public static void printHello(String message) { System.out.println(message); } } |
出力結果
NoSuchMethodError: printHello
このケースでは、メソッドの引数が間違っています。
"printHello"メソッドは文字列のみを受け取る設計になっていますが、数値を含む二つの引数を渡してしまっています。

対処後のソースコード
1 2 3 4 5 6 7 8 9 |
public class HelloWorld { public static void main(String[] args) { printHello("Hello World!"); } public static void printHello(String message) { System.out.println(message); } } |
出力結果 Hello World!
対処法は、メソッド呼び出し時の引数を正しく設定することです。
ここでは、"printHello"メソッド呼び出し時に不要な数値の引数を削除しました。
ケース3: メソッドの存在しないクラスからの呼び出し
エラーが発生するソースコード
1 2 3 4 5 6 7 8 |
public class HelloWorld { public static void main(String[] args) { AnotherClass.printHello(); } } class AnotherClass { } |
出力結果
NoSuchMethodError: printHello
このケースでは、存在しないメソッドを別のクラスから呼び出しています。
"AnotherClass"には"printHello"メソッドが実装されていないのに、そのメソッドを呼び出そうとしてNoSuchMethodErrorが発生しています。

対処後のソースコード
1 2 3 4 5 6 7 8 9 10 11 |
public class HelloWorld { public static void main(String[] args) { AnotherClass.printHello(); } } class AnotherClass { public static void printHello() { System.out.println("Hello from AnotherClass!"); } } |
出力結果
Hello from AnotherClass!
このケースの対処法は、呼び出そうとしているメソッドを適切なクラスに追加することです。
ここでは、"AnotherClass"に"printHello"メソッドを追加しました。
ケース4: インスタンスメソッドをstaticな方法で呼び出す
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 |
public class HelloWorld { public static void main(String[] args) { HelloWorld.printHello(); } public void printHello() { System.out.println("Hello World!"); } } |
出力結果
NoSuchMethodError: printHello
このケースでは、インスタンスメソッドをクラス名を使ってstaticな方法で呼び出してしまっています。
その結果、NoSuchMethodErrorが発生しています。

対処後のソースコード
1 2 3 4 5 6 7 8 9 10 |
public class HelloWorld { public static void main(String[] args) { HelloWorld helloWorld = new HelloWorld(); helloWorld.printHello(); } public void printHello() { System.out.println("Hello World!"); } } |
出力結果 Hello World!
対処法は、インスタンスメソッドを正しくインスタンスから呼び出すことです。
ここでは、"HelloWorld"クラスのインスタンスを作成し、そのインスタンスから"printHello"メソッドを呼び出しています。
ケース5: メソッドのスコープがprivateである
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 10 |
public class HelloWorld { public static void main(String[] args) { HelloWorld helloWorld = new HelloWorld(); helloWorld.printHello(); } private void printHello() { System.out.println("Hello World!"); } } |
出力結果
NoSuchMethodError: printHello
このケースでは、privateメソッドをクラス外から呼び出そうとしています。
その結果、NoSuchMethodErrorが発生しています。

対処後のソースコード
1 2 3 4 5 6 7 8 9 10 |
public class HelloWorld { public static void main(String[] args) { HelloWorld helloWorld = new HelloWorld(); helloWorld.printHello(); } public void printHello() { System.out.println("Hello World!"); } } |
出力結果
Hello World!
対処法は、メソッドのスコープをpublicに変更することです。
ここでは、"printHello"メソッドのスコープをprivateからpublicに変更しました。
まとめ
JavaのNoSuchMethodErrorは、主にメソッドの呼び出しに問題があるときに発生します。
具体的には、メソッドが存在しない、メソッドの引数や戻り値の型が間違っている、メソッドが適切なスコープにない、などの理由で発生します。
これらの問題を理解し、適切に対処することで、NoSuchMethodErrorを修正することができます。
この記事があなたのプログラミング作業を助けることができれば幸いです。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

Javaのエラー一覧はコチラ
-
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る