2015-04-06 8 views
4

Я бегу следующий кодКак отладить исключение NoSuchMethodError?

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"); 
    } 

} 

и получать

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) 

, по-видимому, старая версия достоянию Io используется где-то. Но я не вижу этого в проекте.

Возможно ли узнать путь к файлу класса во время выполнения?

+0

Как вы его используете? Покажите нам полную команду 'java'. –

+0

Вы можете показать список зависимостей? – EpicPandaForce

ответ

7

Да, вы можете использовать это Classloader получить ресурс, с которого загружается класс:

ClassLoader classLoader = FileUtils.class.getClassLoader(); 

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

выход Пример:

баночка: Файл:/D:/maven_repository/достояния -io/commons-io/2.0.1/commons-io-2.0.1.jar !/org/apache/commons/io/FileUtils.class

+0

Спасибо за это. В моем случае оказалось, что мне нужно запустить 'mvn clean' на модуле maven, которого я не ожидал, чтобы его очистить. – Muhd

 Смежные вопросы

  • Нет связанных вопросов^_^