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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

hadoop-3.1.3
hbase-2.2.2-bin

一、问题描述

在学习林子雨老师编写的《Spark编程基础》时
在这里插入图片描述
使用如下命令运行jar包读取HBase时出现如下错误Exception in thread “main” java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/object; )v
在这里插入图片描述

二、问题分析

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

三、解决方案

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

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

查看HBase中的guava版本

cd /usr/local/hbase/lib
ll

查看Spark中的guava版本

cd /usr/local/spark/jars/hbase
ll

在我的虚拟机中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

再使用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的名字

再次运行问题解决。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: goJava