By Alvin Alexander. Last updated: October 30, 2017
Java exception FAQ: What is a Java NoSuchMethodException?
Answer: Using Java, you can get a NoSuchMethodException when you're using reflection and try to dynamically use a method on a class, and the method does not actually exist. The following example Java class shows how this NoSuchMethodException
can be generated:
package com.devdaily.javasamples; import java.lang.reflect.Method; public class JavaReflectionExample2 { public JavaReflectionExample2() { Class c; try { c = Class.forName("java.lang.String"); try { Class[] paramTypes = new Class[5]; Method m = c.getDeclaredMethod("fooMethod", paramTypes); } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { // deal with the exception here ... e.printStackTrace(); } } public static void main(String[] args) { new JavaReflectionExample2(); } }
In this example I intentionally create a NoSuchMethodException
by trying to instantiate a method named fooMethod
on the java.lang.String
class. Here's the line of code that actually throws the exception:
Method m = c.getDeclaredMethod("fooMethod", paramTypes);
Because this method (fooMethod
) doesn't exist, a NoSuchMethodException
is thrown. The actual error message (stack trace) is as follows:
java.lang.NoSuchMethodException: java.lang.String.fooMethod(null, null, null, null, null) at java.lang.Class.getDeclaredMethod(Class.java:1909) at com.devdaily.javasamples.JavaReflectionExample2.(JavaReflectionExample2.java:17) at com.devdaily.javasamples.JavaReflectionExample2.main(JavaReflectionExample2.java:37)