博客 Exception in thread “main“ java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArg

Exception in thread “main“ java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArg

   数栈君   发表于 2023-10-25 11:58  787  0

一、问题描述:
在学习林子雨老师编写的《Spark编程基础》时

使用如下命令运行jar包读取HBase时出现如下错误:Exception in thread “main” java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/object; )v


二、问题分析:
对此问题在配置hive时也有出现,问题主要是虚拟机内HBase,Spark,Hadoop三者的guava版本不一致导致的。在Hive的安装配置中也有提及。Hadoop的guava.jar存放在/share/common/lib目录下,HBase的guava.jar存放在lib文件夹下

三、解决方案:
只需要将三者中的低版本删除,高版本复制到低版本处即可,具体操作为:
查看Hadoop中的guava版本(根据自身环境修改路径)

cd /usr/local/hadoop/share/common/lib #进入目标文件夹
ll #查看guava.jar版本
1
2
查看HBase中的guava版本

cd /usr/local/hbase/lib
ll
1
2
查看Spark中的guava版本

cd /usr/local/spark/jars/hbase
ll
1
2
在我的虚拟机中Hadoop中的guava版本最高,为guava-27.0-jre.jar版本,所以我们将其复制到对应的HBase和Spark目录。
(sudo即将root权限赋给hadoop用户)

sudo cp guava-27.0-jre.jar /usr/local/hbase/lib
sudo cp guava-27.0-jre.jar /usr/local/spark/jars/hbase
1
2
再使用cd命令切换到HBase和Spark目录删除其中的guava。
(rm -rf 为删除命令,guava改成对应的版本号)

cd /usr/local/hbase/lib
sudo rm -rf guava的名字
cd /usr/local/spark/jars/hbase
sudo rm -rf guava的名字
1
2
3
4
再次运行,问题解决。

免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群