2015-04-06 85 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); 

輸出示例:

的jar:文件:/ d:/ maven_repository /公-io/commons-io/2.0.1/commons-io-2.0.1.jar!/org/apache/commons/io/FileUtils.class

+0

非常感謝。就我而言,事實證明,我需要在一個我不希望清理的maven模塊上運行'mvn clean'。 – Muhd