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?
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