报错 java.lang.NoSuchMethodError: org.apache.commons.lang3.StringUtils.repacePattern()

本文解决了一个因不同依赖包中commons-lang3版本不一致导致的NoSuchMethodError问题,通过调整pom.xml文件中依赖包的顺序及排除特定依赖,确保了项目在Linux环境下正确运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常现象 : 

  编译时正常,压住ctrl + 鼠标单击StringUtils 发现引用的是 commons-lang3-3.2.1.jar中的StringUtils.class。

  eclipse 启动项目执行正常不报错。

  部署到linux 执行报错java.lang.NoSuchMethodError: org.apache.commons.lang3.StringUtils.repacePattern。

  此时pom.xml中直接引入commons-lang3-3.2.1.jar的位置在220几行,然后有一个第三方提供的接口驱动包meta-api.jar

(里面依赖了 hive-exec-1.1.1.jar 此jar 依赖commons-lang3) 在pom.xml 中1000多行。

  备注:调换两个依赖包前后次序(将commons-lang3-3.2.1.jar放在 meta-api.jar之后)编译出现报错。

异常原因:

  项目再运行时候虚拟机加载了meta-api.jar 中依赖的hive-exec-1.1.1.jar 依赖的commons-lang3-*.*.*.jar

  由于 此commons-lang3-*.*.*.jar 版本低   StringUtils.class 没有repacePattern()方法。

  所以抛出异常。

解决办法:再导入meta-api.jar 位置排除掉hive-exec-1.1.1.jar(将commons-lang3.jar 所在的 jar包排除),形式如下

<dependency>
	<groupId>org.*.*</groupId>
	<artifactId>meta-api</artifactId>
	<version>3.9</version>
	<exclusions>
		<exclusion>
		    <groupId>com.cc.maven</groupId>
		    <artifactId>project-c</artifactId>
		</exclusion>
	</exclusions>
</dependency>

 

java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.ge。 这个错误通常发生在Java程序中,表示代码中调用的方法在所使用的库中不存在。具体来说,这个错误的原因是程序代码中使用了Apache Commons Lang库中的MethodUtils类的ge方法,但是实际的库中并没有这个方法。在这种情况下,Java虚拟机会抛出NoSuchMethodError异常,告知调用者该方法不存在。 要解决这个问题,我们可以考虑以下几个步骤: 1. 确认所使用的Apache Commons Lang库版本是否正确。可能是因为你使用的是一个过时的版本,其中并没有ge方法。可以通过查看官方文档或者Apache Commons Lang库的源代码来确认版本。 2. 检查代码中对MethodUtils.ge方法的调用。确认是否拼写错误、错误参数、错误的方法签名等导致方法找不到。 3. 如果确认版本和代码调用都正确,那可能是因为你使用的Apache Commons Lang版本与其他依赖库存在冲突。这种情况下,可能需要升级或者降级Apache Commons Lang库的版本,以解决冲突。 4. 如果以上步骤都没有解决问题,考虑尝试替换使用其他类似的方法,或者寻找其他解决方案来完成代码中原本需要使用MethodUtils.ge方法的操作。 总之,NoSuchMethodError异常是因为在程序代码中调用的方法在所使用的库中不存在。通过检查所使用的库版本、代码中的调用以及可能存在的依赖库冲突,可以解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值