Hadoop Protobuf错误:Hbase createTable&;放入java代码(protobuf LiteralByteString)

Hadoop Protobuf错误:Hbase createTable&;放入java代码(protobuf LiteralByteString),hadoop,hbase,protocol-buffers,Hadoop,Hbase,Protocol Buffers,我正在用kafka、spark stream和hbase开发java应用程序。 在通过maven clean install编译代码后,在运行应用程序时遇到以下错误: hadoop版本:2.7.3 HBase版本:HBase-0.98.24-hadoop2 火花:2.1.0 虽然我已经在这个网站上检查并应用了以前的答案,但我仍然遇到了这个问题 谢谢你 `Exception in thread "main" org.apache.hadoop.hbase.DoNotRetryIOExcepti

我正在用kafka、spark stream和hbase开发java应用程序。 在通过maven clean install编译代码后,在运行应用程序时遇到以下错误:

  • hadoop版本:2.7.3
  • HBase版本:HBase-0.98.24-hadoop2
  • 火花:2.1.0
虽然我已经在这个网站上检查并应用了以前的答案,但我仍然遇到了这个问题

谢谢你

`Exception in thread "main" org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString
at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:225)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:133)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:101)
at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:289)
at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:190)
at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:185)
at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:111)
at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:789)
at org.apache.hadoop.hbase.catalog.MetaReader.fullScan(MetaReader.java:542)
at org.apache.hadoop.hbase.catalog.MetaReader.tableExists(MetaReader.java:310)
at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:317)
at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:331)

ApacheHadoop2.7.3依赖于Protobuf2.5.0。查看Protobuf 2.5.0的源代码,可以在此处看到类
com.google.Protobuf.LiteralByteString

但是,在Protobuf的更高版本中不存在此类。例如,以下是最近3.1.0版本中的com/google/protobuf目录:


基于此,您的应用程序很可能已经选择了Protobuf 2.5.0以外的版本,并将其放在类路径上。我建议在应用程序上运行
mvn-dependency:tree
,查看它是否拾取了不兼容的Protobuf依赖项(可能是传递的)。如果它在应用程序的Maven依赖项中看起来不错,那么当您启动应用程序并获取不正确的Protobuf版本时,可能有什么东西在运行时覆盖了类路径。

非常感谢!!!根据您的回答,通过更改protobuf版本(v.2.5)解决了此问题。
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)