冲突原因
Elasticsearch 2.4.1 依赖com.google.guava18.0以上版本
Phoenix 和 HBase 依赖com.google.guava16.0以下版本
guava 17.0 为临界版本,做了较大改动,导致版本不兼容
常见报错
com.google.common.base.Stopwatch.()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator
解决方案
ES官方方案
方案原理
利用maven-shade-plugin,它可以把依赖的包打包进项目的jar,并且可以重新命名依赖包的包名。这样编译后,Elasticsearch使用的是重新命名的guava18.0包,不再依赖项目中引用的guava16.0版本。
具体实现
用Maven新建工程,只修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=