HBase中报错 java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString
Protobuf(全称 Protocol Buffers)是 Google 开发的一种数据描述语言,能够将结构化数据序列化,可用于数据存储、通信协议等方面。在 HBase 里面用使用了 Protobuf 的类库。
版本:
HBase:1.3.1
MySQL:8.0.13
错误报告
org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString
原因分析
运行mvn dependency:tree后发现MySQL8.0.13中有com.google.protobuf:protobuf-java:jar:3.6.1:compile。
查看了3.6.x的protobuf 的源码,里面并没有LiteralByteString这个类。
https://github.com/protocolbuffers/protobuf/tree/3.6.x/java/core/src/main/java/com/google/protobuf
查看了2.6.1及以下版本的protobuf 的源码,里面存在LiteralByteString这个类。
https://github.com/google/protobuf/blob/v2.5.0/java/src/main/java/com/google/protobuf/LiteralByteString.java
解决方法尝试
将maven中的MySQL8.0.13的引入注释掉或MySQL版本换成低版本,如5.0.7,可以正常运行。
原因猜测
应用程序已经获得了另外一个版本的Protobuf(如3.6.1)并将其放在类路径中。建议在应用程序上运行mvn dependency:tree以查看它是否正在拾取不兼容的Protobuf依赖项(可能是传递性的)。如果应用程序的Maven依赖关系看起来很好,那么当你启动应用程序并拾取一个不正确的Protobuf版本时,可能是在运行时重载了类路径。
解决办法
1、降低protobuf版本(实操可用)
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.5.0</version>
</dependency>
2、将客户端的Protobuf类库重命名(尝试了下还是不行,应该是我本身项目哪还有问题)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<relocations>
<relocation>
<pattern>com.google.protobuf</pattern>
<shadedPattern>com.fazi.google.protobuf</shadedPattern>
</relocation>
</relocations>
</configuration>
</plugin>
</plugins>
</build>
3、使用hbase-shaded-client(实操可用)
hbase-shaded-client是社区里有人将HBase里面比较常见的依赖进行了重命名,在pom文件中我们可以将引入的hbase-client替换成hbase-shaded-client
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-shaded-client</artifactId>
<version>1.3.1</version>
</dependency>
参考地址:
https://stackoverflow.com/questions/41734330/protobuf-error-hbase-createtable-put-in-java-codeprotobuf-literalbytestring
https://www.iteblog.com/archives/2463.html
---------------------
作者:发孖、
来源:CSDN
原文:https://blog.csdn.net/xcf111/article/details/86692591
版权声明:本文为博主原创文章,转载请附上博文链接!
HBase中报错 java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString的更多相关文章
- 阿里大鱼短信发送,放到项目中报错Java.lang.NoClassDefFoundError:com/aliyuncs/exceptions/ClientException,已解决
由于项目中使用的短信服务发送的消息太慢,所以把采用了阿里大鱼的短信服务,花费了几个小时,通过审核,发现可以单独运行.但是,放到web项目中会报错(Java.lang.NoClassDefFoundEr ...
- Caused by: java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects
环境:jdk1.8 开发工具:IDEA 说明:今天在做springboot集成swagger2的时候,在启动程序的时候,报错 报错信息: Error starting ApplicationConte ...
- 浏览器启动不起来java.lang.NoClassDefFoundError: com/google/common/base/Function
java.lang.NoClassDefFoundError: com/google/common/base/Function 原因:只有以下两个包 解决方案:导入 selenium-server-s ...
- 一个困扰很久的异常—java.lang.NoClassDefFoundError: com/google/gson/Gson
描述: 这个异常是在运行时抛出的,编译的时候没有任何问题,而且异常信息非常少,只有一句:java.lang.NoClassDefFoundError: com/google/gson/Gson 解决: ...
- 出现java.lang.NoClassDefFoundError: com/google/common/base/Charsets异常错误
使用selenium,出现java.lang.NoClassDefFoundError: com/google/common/base/Charsets异常错误 原因:selenium-server- ...
- Selenium 运行时出现错误(java.lang.NoClassDefFoundError: com/google/common/base/Function)
已经写好了java脚本,点击运行的过程中如果出现如下的错误提示时: java.lang.NoClassDefFoundError: com/google/common/base/Function 问题 ...
- 解决:启动项目报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
前言:项目在 spring-mvc.xml 文件中配置了上传文件拦截,结果启动报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupl ...
- 公司拷贝回家的工程用sts导入clean package报错java.lang.NoClassDefFoundError
从公司拷贝工程回家加班,用相同版本的sts和jdk但是run as maven build clean package 总是报错java.lang.NoClassDefFoundError: ...
- Intellij IDEA 报错java.lang.NoClassDefFoundError
Intellij IDEA 报错java.lang.NoClassDefFoundError 11-Aug-2018 23:48:24.686 严重 [http-nio-8080-exec-5] or ...
随机推荐
- mooc_java 集合框架下
1.判断List中课程是否存在 /** * 测试List的contains方法 * @param args */ public void testListContains(){ Course cour ...
- web项目的实质
web项目的实质 web项目的实质其实也就是在用户发过来一个请求后,我们返回一个响应. 用户看到的页面就是我们响应中的响应体(里面是html代码). 所以,我们整个项目的所有操作都是围绕着怎么来写好这 ...
- Java微信公众平台开发_04_自定义菜单
一.本节要点 1.菜单相关实体类的封装 参考官方文档中的请求包的内容,对菜单相关实体类进行封装. 2.数据传输格式—JSON 自定义菜单中请求包的数据是Json字符串格式的,请参见: Java_数据 ...
- FileHeader 详解文件头部注释-sublimeText
FileHeader 前言: 直奔主题吧,sublimeText 的大部分插件都是非常好用,易用的,而且很容易找到资料.这次用 FileHeader 发现网上的资料很少,而且大部分说得都很模糊,或者直 ...
- .DS_Store 文件是什么?Mac下面如何禁止.DS_Store生成
.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini. 1,禁止.DS_store生成:打开 “终端” ,复制黏贴下 ...
- dubbo的防痴呆设计
项目中也经常会遇到各种因为配置而引入的问题,很多技术支持解决不掉就找开发,结果发现大部分还是配置错误或网络不通等.如果在设计之初就能考虑到并针对这些问题做出应对设计,甚至给出异常的解决方案,确实可以减 ...
- hdu 1521 排列组合 —— 指数型生成函数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1521 标准的指数型生成函数: WA了好几遍,原来是多组数据啊囧: 注意精度,直接强制转换(int)是舍去小 ...
- mac下nginx的安装
新手初学,按照网上的教程,一步一步来进行安装.把自己的安装流程贴出来. 1 安装nginx需要三方的lib库pcre.因此先下载pcre. 在这里,需要注意的是安装的pcre的版本要与nginx对应. ...
- AI-Info-Micron-Insight:高速数据:第四次工业革命的助推引擎
ylbtech-AI-Info-Micron-Insight:高速数据:第四次工业革命的助推引擎 1.返回顶部 1. 高速数据:第四次工业革命的助推引擎 第四次工业革命已然来临,因为数字技术几乎连接了 ...
- mongodb主从复制配置
dbpath=/home/mongodb/data logpath=/home/mongodb/log/mongodb.log logappend=true port= fork=true noaut ...