未找到StringUtils类

时间:2017-11-03 00:48:53

标签: java string maven intellij-idea apache-stringutils

我编写了一个控制台应用程序,它将文本文件读取到String,然后处理文件内容。我在我的项目中使用了 maven ,启用了autoimport,添加了正确的依赖项,但是当我尝试使用replace()方法处理String时(此方法属于org.apache.commons.lang3.StringUtils类)我得到了下面提到的错误。此外,当我在 intelliJ 中启动我的应用程序时,它运行良好,一切似乎都很好。当我使用maven编译和构建.jar文件然后通过终端启动它时会报告此错误:

  

线程“main”中的异常java.lang.NoClassDefFoundError:   org / apache / commons / lang3 / StringUtils at   com.company.Reader.process(Reader.java:47)at   com.company.App.main(App.java:9)引起:   java.lang.ClassNotFoundException:org.apache.commons.lang3.StringUtils     在java.net.URLClassLoader.findClass(URLClassLoader.java:381)at   java.lang.ClassLoader.loadClass(ClassLoader.java:424)at   sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:335)at at   java.lang.ClassLoader.loadClass(ClassLoader.java:357)

此外, pom.xml 中的依赖项如下所示:

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.5</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>
      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
          <version>3.4</version>
      </dependency>
      <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <version>1.3</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <version>1.8.4</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

我不知道可能出现什么问题。我知道一种让我的程序工作的方法,即手动下载带有commons-lang3的.jar并将其包含在我的项目中,但这对我来说不是一个令人满意的解决方案。有谁知道为什么我会收到这样的错误? 提前致谢

1 个答案:

答案 0 :(得分:0)

你没有把你的整个pom.xml,但我想你忘记了依赖:

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>

你说你的项目在Intellij内部运行,那么你的计算机中已经有了common-lang3。

我认为问题在于maven依赖。

尝试通过项目根文件夹中的命令行执行:mvn clean install

您需要将commons-lang3-3.4.jar放在类路径中

两个可以帮助您的链接:

https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

Run a JAR file from the command line and specify classpath