未找到 StringUtils class
StringUtils class not found
我编写了一个控制台应用程序,它将文本文件读取为 String,然后处理文件内容。我在我的项目中使用了 maven,启用了自动导入,添加了适当的依赖项,但是当我尝试使用 replace()
方法处理字符串时(此方法属于 org.apache.commons.lang3.StringUtils
class) 我收到下面提到的错误。此外,当我在 intelliJ 中启动我的应用程序时,它运行良好,一切似乎都很好。当我使用 Maven 编译和构建 .jar 文件然后通过终端启动它时,它报告此错误:
Exception in thread "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) Caused by:
java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils
at 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
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>
我不知道哪里出了问题。我知道一种使我的程序工作的方法,即手动下载 .jar 和 commons-lang3 并将其包含在我的项目中,但这对我来说不是一个令人满意的解决方案。有谁知道为什么我会收到这样的错误?
提前致谢
你没有把你的整个 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
我编写了一个控制台应用程序,它将文本文件读取为 String,然后处理文件内容。我在我的项目中使用了 maven,启用了自动导入,添加了适当的依赖项,但是当我尝试使用 replace()
方法处理字符串时(此方法属于 org.apache.commons.lang3.StringUtils
class) 我收到下面提到的错误。此外,当我在 intelliJ 中启动我的应用程序时,它运行良好,一切似乎都很好。当我使用 Maven 编译和构建 .jar 文件然后通过终端启动它时,它报告此错误:
Exception in thread "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) Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils at 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 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>
我不知道哪里出了问题。我知道一种使我的程序工作的方法,即手动下载 .jar 和 commons-lang3 并将其包含在我的项目中,但这对我来说不是一个令人满意的解决方案。有谁知道为什么我会收到这样的错误? 提前致谢
你没有把你的整个 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