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

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时也有出现,问题主要是虚拟机内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版本

查看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的名字

再次运行,问题解决。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根据提供的引用内容,这个错误通常是由于Kafka版本与使用的其他库版本不兼容导致的。可能的解决方法是升级或降级Kafka版本,以使其与其他库版本兼容。 以下是一些可能有用的步骤: 1.检查Kafka版本是否与使用的其他库版本兼容。 2.尝试升级或降级Kafka版本,以使其与其他库版本兼容。 3.检查是否存在其他库版本冲突的情况,可能需要升级或降级其他库版本。 4.检查是否正确设置了CLASSPATH环境变量,以便Kafka可以找到所需的类。 5.检查是否正确设置了JAVA_HOME环境变量,以便Kafka可以找到正确的Java安装路径。 6.检查是否正确设置了KAFKA_HOME环境变量,以便Kafka可以找到正确的安装路径。 ```java // 示例代码 // 引用[1] // 检查Kafka版本是否与使用的其他库版本兼容 // 尝试升级或降级Kafka版本,以使其与其他库版本兼容 // 检查是否存在其他库版本冲突的情况,可能需要升级或降级其他库版本 // 检查是否正确设置了CLASSPATH环境变量,以便Kafka可以找到所需的类 // 检查是否正确设置了JAVA_HOME环境变量,以便Kafka可以找到正确的Java安装路径 // 检查是否正确设置了KAFKA_HOME环境变量,以便Kafka可以找到正确的安装路径 // 引用[2] // java.io.NotSerializableException: org.apache.log4j.Logger // 这个错误通常是由于Logger类没有实现Serializable接口导致的。 // 可以尝试使用transient关键字修饰Logger对象,或者使用其他可序列化的日志库。 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值