解决:Exception in thread main java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExe

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

1.报错:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors
.directExecutor()Ljava/util/concurrent/Executor;

2. 解决方法:

问题
当项目中同时集成Hbase和Elasticsearch时,经常遇到依赖包冲突的问题,如com.google.guava,org.joda等。造成guava冲突是因为集成Hbase和ES时都用到了guava包,但是两者要求的版本不一样,ES 2.0 版本以上的要求guava(19.0+),Hbase 1.0要求的guava为16.0,如果把guava统一为16.0,则ES会因为guava的版本太低而报错。joda也如此。所以,要同时使用Hbase和ES,就得解决这个冲突。

解决办法
1、首先,新建maven项目,对pom.xml进行如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.es</groupId><artifactId>esshade</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies>   <!-- elasticsearch --><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>2.4.1</version></dependency><dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>delete-by-query</artifactId><version>2.4.1</version></dependency><!-- elasticsearch 依赖库结束 --></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.4.1</version><configuration><createDependencyReducedPom>false</createDependencyReducedPom></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><relocations><relocation><pattern>com.google.guava</pattern><shadedPattern>my.elasticsearch.guava</shadedPattern></relocation><relocation><pattern>org.joda</pattern><shadedPattern>my.elasticsearch.joda</shadedPattern></relocation><relocation><pattern>com.google.common</pattern><shadedPattern>my.elasticsearch.common</shadedPattern></relocation><relocation><pattern>com.google.thirdparty</pattern><shadedPattern>my.elasticsearch.thirdparty</shadedPattern></relocation></relocations><transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" /></transformers></configuration></execution></executions></plugin></plugins></build><repositories><repository><id>elasticsearch-releases</id><url>http://maven.elasticsearch.org/releases</url><releases><enabled>true</enabled><updatePolicy>daily</updatePolicy></releases><snapshots><enabled>false</enabled></snapshots></repository></repositories>
</project>

pom.xml文件配置好后,构建,得到jar包。如下图,依赖关系加入.m2文件夹里。 
 
如上配置完成后,其实就是将com.google.guava等4个可能有冲突的jar包通过maven-shade-plugin插件迁移后,重新打个jar包从而使得在引入这个jar包时能够使用该jar包自己的依赖而不是使用外部依赖。

2、Hbase与ES的融合 
在同时集成Hbase与ES的项目中,加入Hbase的依赖包,并加入步骤1中构建的依赖包:
 

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.6.4</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.6.4</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.1</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase</artifactId><version>1.2.1</version><type>pom</type></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>16.0.1</version></dependency><dependency><groupId>com.es</groupId><artifactId>esshade</artifactId><version>1.0-SNAPSHOT</version><exclusions><exclusion><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId></exclusion></exclusions></dependency>

配置好了,重新清理构建,测试一下,Hbase和ES就可以同时使用了。 
————————————————
版权声明:本文为CSDN博主「XiaoXiao_Yang77」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/XiaoXiao_Yang77/article/details/78226424

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算技术背后的天才程序员:Open VSwitch鼻祖Martin Casado

摘要&#xff1a;Martin Casado被称为软件定义网络之父&#xff0c;OpenFlow的发明人、Nicira的创始人、硅谷最炙手可热的“40 under 40”之一&#xff0c;另外&#xff0c;他提交的虚拟交换机Open VSwitch的第一个Commit揭开波澜壮阔的软件定义网络时代。 【编者按】在一次采…

Maven Helper 安装使用(jar 包管理工具)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一般用这款插件来查看maven的依赖树。在不使用此插件的情况下&#xff0c;要想查看maven的依赖树就要使用Maven命令maven dependency:tr…

云计算技术背后的那些天才程序员:KVM之父Avi Kivity

摘要&#xff1a;KVM以其精简的架构&#xff0c;清晰的定位获得Linux社区多数开发人员的支持并快速被合并入主干&#xff0c;从而成为x86全虚拟化技术的一颗新星&#xff0c;其提出者Avi Kivity对于计算机体系架构和Linux内核有深入理解&#xff0c;并且精通汇编和C。 提到以色…

解决:Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.执行&#xff1a; java -jar xxx.0.0.1-SNAPSHOT.jar 报错&#xff1a; Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar 2.原…

与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉

摘要&#xff1a;谈起阿兰图灵、高德纳、艾兹赫尔戴克斯特拉&#xff0c;我们并不陌生&#xff0c;这些振聋发聩名字背后是颠覆了人类生活的现代计算机工业。然而有些人的荣誉却远低于他的贡献&#xff0c;比如Fabrice&#xff0c;过去20年最闪亮和最有影响力的程序员之一。 【…

工具类:获取 spring 容器中 bean

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 package com.orange.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationConte…

数据vs.算法,究竟谁更重要

摘要&#xff1a;数据和算法究竟哪个更重要并没有一个明确的界定&#xff0c;根据不同的情境和应用&#xff0c;它们发挥的作用不同。虽然实际情况确实如此&#xff0c;但是在数据为王的时代&#xff0c;算法的关心似乎已只停留在某些领域或者某些公司里面。 【编者按】随着服…

JDK8 集合排序 xxxList.stream.sorted(...)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 # 默认 list.stream().sorted() list.stream().sorted(Comparator.reverseOrder()) # 按字段排序 xxxList.stream().sorted(Comparato…

云数据中心选址PK:微软第一,IBM第二,谷歌最少

摘要&#xff1a;多区域数据中心往往可以侧面说明服务的可用性&#xff0c;在这个方面&#xff0c;Azure以12个区域领先&#xff0c;接着是Softlayer 9个&#xff0c;Amazon 8个&#xff0c;Rackspace 6个。Google比较落后&#xff0c;只有3个。 【编者按】当下&#xff0c;各…

解决:Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRA

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. redisTemplate 报错&#xff1a; Caused by: com.fasterxml.jackson.databind.JsonMappingException:Unexpected token (START_OBJEC…

用户暴增下的收入降低,AWS面临尴尬

摘要&#xff1a;虽然摩尔定律和规模经济会带来成本效益&#xff0c;但是在大量的竞争下&#xff0c;AWS的收益已明显降低&#xff0c;而10%的股价下降更带来了投资者的不满。 【编者按】虽然亚马逊的云业务远远超过了IBM、HP和Google等巨头科技软件公司&#xff0c;但是其增长…

解决:Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 报错&#xff1a; Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding t…

为什么软件测试需要变革?

摘要&#xff1a;世易时移&#xff0c;现今的科技发展一日千里&#xff0c;软件测试这门科学也到了该进行革命的时候了。作者Bhumika Mehta认为软件测试需要的就是想法与创意。没有想法的测试人员可能在测试这条路上不会走得太远。 世易时移&#xff0c;现今的科技发展一日千里…

websocke 在线测试地址

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 记录一个websocke在线测试地址&#xff1a; http://www.websocket-test.com/

Linux统治超级计算领域的九个理由

Linux能统治超级计算领域的几个原因不外乎&#xff1a;历史悠久、成本低廉、可靠、安全、开源、资源丰富、易于管理、创新不断等等。1. Linux在超级计算的历史 NASA在1994年使用Linux建立了第一个Beowulf集群&#xff0c;作为昂贵的HPC超级计算机的一种替代品。“Beowulf集群是…

左手代码,右手是你

认识你是在 5 年前&#xff1a;成都&#xff0c;地铁2号线&#xff0c;白果林站&#xff0c;2014 年 2 月下旬 高高的&#xff0c;廋廋的&#xff0c;戴着一副莹润的眼镜&#xff0c;穿着一件并不太合身的、略宽松的羽绒服&#xff0c;安静的站在我们约定见面的地铁口 是的&a…

开源是如何让Android成为移动市场大佬的?

在如今的手机操作系统市场中&#xff0c;Android占有约80%的市场份额&#xff0c;是当之无愧的大佬。这其中离不开开源的贡献&#xff1a;作为开源系统本身&#xff0c;Android就激起了世界各地开发者、开源爱好者和大众用户的兴趣。大约是十年前&#xff0c;我有了自己的第一部…

10个常见的缓存使用误区

摘要&#xff1a;在日常工作中&#xff0c;开发者经常利用缓存来进行优化站点或优化应用程序。但在实际应用中&#xff0c;在使用缓存时&#xff0c;总是那么不尽如意。这什么原因呢&#xff1f;本文&#xff0c;笔者收集了最为常见的十大缓存误区以及使用建议。 在日常工作中…

十种程序语言帮你读懂大数据的“秘密”

摘要&#xff1a;经过数年发展&#xff0c;当下大数据领域已充斥着各种各样的分析工具&#xff0c;那么如何才能选择自己适合的。本文从R、Scala、Java、Go、Python等10种语言着手&#xff0c;带大家一览大数据领域的常用工具。 【编者按】面对成千上万条数据记录&#xff0c;…

标准开源产品是打破供应商垄断的关键

Mrten Mickos是美国桉树系统公司的CEO&#xff0c;提出当公司拘泥于自己的设计和定制化时&#xff0c;与他们被供应商锁定所受到的损害程度是相当的。Mickos解释了为什么他认为采用标准开源产品是避免这两种被锁定类型的最好方式。当谈到软件和云服务时&#xff0c;业务锁定是有…