Exception in thread “main“ java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkAr

问题来源:

        在进行林子雨老师的大数据课程实验安装 Hive 仓库成功后,在启动 Hive 的时候,系统突然报这个错误,初步判定是 jar 包兼容性问题引起的报错,具体解决方法如下。

解决方法:

        首先考虑到 Hive 也是基于 Java 程序语言进行开发的,这么庞大的应用避免不了依赖一些功能 jar 包,所以进入 hive 安装目录下的 lib 依赖文件夹进行查看,首先找到最基础的 guava 依赖包,guava被认为是 Java 程序员开发必备的工具,可以对字符串、集合、并发、I/O、反射进行操作,所以一般依赖问题都会先找到该包与指定产品所依赖的 guava 包是否版本不兼容。查看后发现本机的依赖文件为 guava-19.0.jar,即该 jar 包的版本为 19.0。

        由于 hive 仓库是基于 Hadoop 的数据仓库,hive 底层是将用户输入的查询语句自动转换成 MapReduce 任务来执行,并把结果返回给用户。因此,hive 也是依赖 hadoop 的产品,所以我们进入 hadoop 的公共包 common 中查看我们上面说到的 guava 包,其中 common 文件夹在你电脑上 hadoop 安装目录下的 share/hadoop/common/lib 下,经过查看发现该路径下的 guava 功能包的版本为 27.0,故经过排查很有可能是因为 hive 自带的 guava 包版本过低导致的问题,故将 hive/lib/ 的 guava-19.0.jar 进行删除,然后将 hadoop/share/hadoop/common/lib 下的 guava-27.0.jar 拷贝一个到 hive/lib/ 下即可,然后重新启动 hive,发现启动成功,至此问题解决。

猜你喜欢

转载自blog.csdn.net/m0_59705760/article/details/125116629