How to debug NoSuchMethodError exception?

I am running the following code

package test.commons;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class Try_FileUtilsWrite {

    public static void main(String[] args) throws IOException {
        System.out.println(FileUtils.class.getClassLoader());
        FileUtils.write(new File("output.txt"), "Hello world");
    }

}

and getting

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.write(Ljava/io/File;Ljava/lang/CharSequence;)V
    at test.commons.Try_FileUtilsWrite.main(Try_FileUtilsWrite.java:12)

apparently, an old version of commons io used somewhere. But I don’t see it in the project.

Is it possible to know the path to class file at runtime?

Answer

Yes you can use that Classloader to get the resource from which the class is loaded:

ClassLoader classLoader = FileUtils.class.getClassLoader();

URL resource = classLoader.getResource("org/apache/commons/io/FileUtils.class");
System.out.println(resource);

Sample output:

jar:file:/D:/maven_repository/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar!/org/apache/commons/io/FileUtils.class

Leave a Reply

Your email address will not be published. Required fields are marked *