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

异常现象 : 

  编译时正常,压住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包排除),形式如下


	org.*.*
	meta-api
	3.9
	
		
		    com.cc.maven
		    project-c
		
	

 

你可能感兴趣的:(java)