引入opencsv-5.5.2.jar仍报org/apache/commons/lang3/ObjectUtils类缺失错误如何解决
报错原因
该java.lang.NoClassDefFoundError报错是因为 opencsv 5.5.2 并非独立可运行jar包,它依赖Apache Commons Lang3库,你仅添加了opencsv本身的jar包,运行时找不到依赖的org.apache.commons.lang3.ObjectUtils类导致报错。
解决方案
可根据你的项目依赖管理方式选择对应方案:
- 手动管理jar包
直接下载 opencsv 5.5.2 匹配的commons-lang3 3.12.0版本jar包,和opencsv-5.5.2.jar一样添加到项目classpath中即可。 - Maven管理依赖
直接在项目的pom.xml中添加opencsv依赖,Maven会自动拉取包括commons-lang3在内的所有传递依赖,无需单独导入依赖包:<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.5.2</version> </dependency> - Gradle管理依赖
在build.gradle的dependencies块中添加如下配置即可自动拉取所有依赖:dependencies { implementation 'com.opencsv:opencsv:5.5.2' }
注意事项
- 如果是命令行直接运行项目,执行java命令时需要把所有依赖jar都加入classpath,示例命令如下(Windows系统需把路径分隔符
:替换为;):java -cp ".:opencsv-5.5.2.jar:commons-lang3-3.12.0.jar" 你的主类全限定名 - 若项目中已经引入了commons-lang3包仍报错,可检查当前引入的版本是否低于3.0,旧版本commons-lang不包含lang3包下的类,升级到3.12.0版本即可解决。
内容的提问来源于stack exchange,提问作者Brandon A Bustamante
相关产品推荐
相关产品推荐

