引起:java.lang.ClassNotFoundException:org.apache.commons.io.FileUtils

Dee*_*Dee 6 java dependencies maven

我正在测试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
}  
Run Code Online (Sandbox Code Playgroud)

我已将commons-io添加到依赖项中

的pom.xml

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.5</version>
 </dependency>  
Run Code Online (Sandbox Code Playgroud)

它编译但是当我运行它时会引发异常

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   
Run Code Online (Sandbox Code Playgroud)

我想我错过了一些事情,你能指点一下吗?

Jir*_*sek 5

如果它编译正常但在运行时抛出异常,则意味着在编译时依赖关系是在类路径上,而在运行代码时则不是.

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

  • 哪个插件,我有同样的问题。 (3认同)
  • 谢谢你的想法,我错过了一个插件,可以在pom.xml中添加,现在工作正常. (2认同)