2016-06-22 21 views
4

我正在測試maven及其功能。我試圖用寫一個字符串到一個文本文件中的commons-io的引起:java.lang.ClassNotFoundException:org.apache.commons.io.FileUtils

import org.apache.commons.io.FileUtils; 
... 
public void writeToFile(String fileName){ 
    File file = new File(fileName); 
    ... 
    FileUtils.writeStringToFile(file,rowEntry); //rowEntry is a String 
} 

我已經加入了公共-IO的依賴

的pom.xml

<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.5</version> 
</dependency> 

它編譯但它在運行時會引發異常

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils 
at com.RandCollections.StringFinder.writeToFile(StringFinder.java:704) 
at com.RandCollections.StringFinder.menu(StringFinder.java:123) 
at com.RandCollections.StringFinderMain.main(StringFinderMain.java:28) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 3 more 

I thi恩我錯過了一些事情,你能幫忙指出嗎?

+0

你好,當你做一個mvn安裝,在你的倉庫裏有FileUtils m2? – ZaoTaoBao

+0

請使用'mvn clean'然後使用'mvn eclipse:eclipse'來解決你的問題...謝謝 –

+0

@ZaoTaoBao是的,我有FileUtils在回購m2 – Dee

回答

5

如果編譯正常但在運行時引發異常,則意味着在編譯時依賴關係在類路徑上,而在運行代碼時不依賴於類路徑。

Maven負責編譯classpath,並確實提供了編譯時的依賴性。您必須檢查運行應用程序的方式,並確保Maven依賴關係也在運行時類路徑中 - 這與Maven無關,除非您將代碼作爲單元測試的一部分運行。

+1

感謝您的想法,我錯過了一個插件在pom.xml中添加,現在工作正常。 – Dee

0

你可以嘗試添加庫到類路徑 例如:

javac -classpath fileUtillibraywhatever.jar YourClass.java 

編輯:

如果你的主類是在一個包

package com.yourpackage.test; 
public class YourClass 
{} 

然後

javac -classpath fileUtillibraywhatever.jar com/yourpackage/test/YourClass.java 

和運行

的java -classpath fileUtillibraywhatever.jar COM/yourpackage /測試/ YourClass

我希望它有助於.. 如果您正在使用IDE 工作https://wiki.eclipse.org/FAQ_How_do_I_add_an_extra_library_to_my_project「s_classpath%3F

相關問題