Hbase连接异常,JAR包冲突解决攻略
来源:互联网 发布:淘宝量子恒道作用 编辑:程序博客网 时间:2024/06/06 01:44
Hbase连接异常(JAR包冲突)
1. 问题描述
用Maven管理Hbase jar包,遇到坑,程序启动就会报错:
[2016-10-27 15:17:12][ERROR][main][HbaseUtil.java:39 ][getHbaseConnection] java.io.IOException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119) ~[hbase-client-1.1.2.jar:1.1.2]…………Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_75] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_75] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_75] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.1.2.jar:1.1.2] ... 7 moreCaused by: java.lang.VerifyError: class org.apache.hadoop.hbase.protobuf.generated.ClientProtos$Result overrides final method getUnknownFields.()Lcom/google/protobuf/UnknownFieldSet; at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_75] at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_75] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_75] at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[?:1.7.0_75] at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[?:1.7.0_75] at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[?:1.7.0_75] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[?:1.7.0_75] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_75] at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[?:1.7.0_75] at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_75] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[?:1.7.0_75] at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_75] at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:210) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:879) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:635) ~[hbase-client-1.1.2.jar:1.1.2] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_75] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_75] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_75] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.1.2.jar:1.1.2] ... 7 more
还有这种错
[2016-10-27 15:17:12][ERROR][main][HbaseUtil.java:39 ][getHbaseConnection] java.io.IOException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119) ~[hbase-client-1.1.2.jar:1.1.2]…………Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_75] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_75] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_75] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.1.2.jar:1.1.2] ... 7 moreCaused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.protobuf.ProtobufUtil at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:879) ~[hbase-client-1.1.2.jar:1.1.2] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:635) ~[hbase-client-1.1.2.jar:1.1.2] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[?:1.7.0_75] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.7.0_75] at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[?:1.7.0_75] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.1.2.jar:1.1.2] ... 7 more
2. 问题定位
看了就蒙了。但是有两个关键错误,java.io.IOException: java.lang.reflect.InvocationTargetException 和
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.protobuf.ProtobufUtil
问题就出在org.apache.hadoop.hbase.protobuf.ProtobufUtil,经历了网上各种搜索,基本确定就是jar包冲突导致的。
通过对jar包Dependency的分析,发现protobuf-java确实有两个版本,一个是2.4.1,一个是2.5.0。
3. 问题解决
问题定位了,如何解决呢?方法也很简单,将低版本的jar包管理里面,添加如下配置,屏蔽掉低版本jar包就可以了:
<exclusions> <exclusion> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> </exclusion> </exclusions>
编译,重新运行,问题完美解决~
1 0
- Hbase连接异常,JAR包冲突解决攻略
- jar包冲突解决
- NoSuchMethodError,解决jar包冲突
- Maven解决jar包冲突
- weblogic解决Jar包冲突
- jar包冲突的解决
- 解决jar包冲突问题
- Hbase、elasticsearch整合中jar包冲突
- 通过maven-shade-plugin 解决Elasticsearch与hbase的jar包冲突问题
- 通过maven-shade-plugin 解决Elasticsearch与hbase的jar包冲突问题
- 通过maven-shade-plugin 解决Elasticsearch与hbase的jar包冲突问题
- 解决jar包冲突,修改包名
- Spring异常——jar包冲突
- transformClassesWithJarMergingForRelease解决办法 解决版本冲突 解决jar包冲突
- ClassLoader解决jar包冲突问题
- 解决asm.jar包的冲突
- 解决jar包冲突后有感
- 解决cxf的jar包冲突
- spring定时任务
- 手机端 css3使用时候的坑
- Android中的Apk的加固(加壳)原理解析和实现
- POJ 2349 (蒙)
- 第六章 C控制语句:循环练习
- Hbase连接异常,JAR包冲突解决攻略
- hdu 2883 网络流+离散化
- Python 爬虫 —— scrapy
- Xcode8.0 打包ipa注意事项
- 验证public static void main(String[] args)
- angularJS 服务(service)
- linux下pycharm和anaconda搭建python开发环境
- 如何成为Linux 全栈工程师
- win8搭建FTP服务器