找回密码
 立即注册
查看: 197|回复: 0

【HBASE报错】Spring整合HBASE报错NoClassDefFoundError

[复制链接]
发表于 2022-12-21 16:21 | 显示全部楼层 |阅读模式
【问题描述】


Spring整合HBASE报错:
org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString    at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:241)    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:214)    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:364)    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:338)    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:137)    at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:65)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)    at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString    at java.lang.ClassLoader.defineClass1(Native Method)    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    at org.apache.hadoop.hbase.util.ByteStringer.<clinit>(ByteStringer.java:44)    at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:1041)    at org.apache.hadoop.hbase.protobuf.RequestConverter.buildScanRequest(RequestConverter.java:492)    at org.apache.hadoop.hbase.client.ScannerCallable.openScanner(ScannerCallable.java:399)    at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:211)    at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:65)    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:212)    ... 7 moreCaused by: java.lang.ClassNotFoundException: com.google.protobuf.LiteralByteString    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)    ... 26 more原因&措施


§ 查看依赖类:protobuf,发现其中无方法LiteralByteString:


Maven查看到我们依赖的protobuf版本为:3.14.0,他源自我们pom中导入的hbase-server 1.3.11


尝试降低hbase-server的版本,2.6.1及以下的protobuf-java是有LiteralByteString的        <!--HBase服务器依赖-->        <dependency>            <groupId>org.apache.hbase</groupId>            <artifactId>hbase-server</artifactId>            <version>1.3.1</version>            <!--hbase-server依赖的protobuf-java版本过高,会导致报错:NoClassDefFoundError: com/google/protobuf/LiteralByteString-->            <exclusions>                <exclusion>                    <artifactId>protobuf-java</artifactId>                    <groupId>com.google.protobuf</groupId>                </exclusion>            </exclusions>        </dependency>        <!--HBase客户端依赖-->        <dependency>            <groupId>org.apache.hbase</groupId>            <artifactId>hbase-client</artifactId>            <version>1.3.1</version>            <exclusions>                <exclusion>                    <artifactId>protobuf-java</artifactId>                    <groupId>com.google.protobuf</groupId>                </exclusion>            </exclusions>        </dependency>        <!-- 手动导入低版本的protobuf-java依赖 -->        <dependency>            <groupId>com.google.protobuf</groupId>            <artifactId>protobuf-java</artifactId>            <version>2.6.1</version>        </dependency>
查看依赖树


查看protobuf类


重新测试,通过

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 13:29 , Processed in 0.091467 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表