原因:java.lang.ClassNotFoundException:org.apache.commons.io.FileUtils

Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils

我正在测试 maven 及其功能。我正在尝试使用 commons-io

将字符串写入文本文件
import org.apache.commons.io.FileUtils;
...
public void writeToFile(String fileName){
    File file = new File(fileName);
    ...
    FileUtils.writeStringToFile(file,rowEntry); //rowEntry is a String
}  

我已将 commons-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   

我觉得我漏掉了一些东西,你能帮忙指出来吗?

如果它编译正常但在 运行ning 时抛出异常,这意味着依赖项在编译时在类路径上,但在 运行ning 代码时不存在。

Maven负责编译classpath,确实提供了编译时的依赖。您必须检查 运行 应用程序并确保 Maven 依赖项也在 运行time 类路径上 - 这与 Maven 无关,除非您 运行 代码作为单元测试的一部分。

您可以尝试将库添加到您的 class路径 例如:

javac -classpath fileUtillibraywhatever.jar YourClass.java

编辑:

如果您的主要 class 在一个包中

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

然后

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

和运行

java-class路径fileUtillibraywhatever.jarcom/yourpackage/test/YourClass

希望对您有所帮助.. 如果您正在使用 iDE https://wiki.eclipse.org/FAQ_How_do_I_add_an_extra_library_to_my_project's_classpath%3F