JAVA Api 调用Hbase报错锦集
1. 报错
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/generated/MasterProtos$MasterService$BlockingInterface 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 java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java: 264 ) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java: 228 ) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java: 218 ) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java: 119 ) at org.apache.minibase.TestDsapapi.<clinit>(TestDsapapi.java: 41 ) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingInterface 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 ) ... 18 more Exception in thread "main" |
解决办法:
1. 导入一下 pom.xml
1 2 3 4 5 | <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-protocol</artifactId> <version> 1.4 . 11 </version> </dependency> |
如果导入后依然报错,但是报错是找不到某些方法,是导入的 client 和 protocol 不一致:如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version> 1.0 . 0 -cdh5. 4.4 </version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-protocol</artifactId> <version> 1.4 . 11 </version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version> 2.6 . 0 </version> </dependency> |
一个 1.4.11 一个 1.0
因此改为:
1 2 3 4 5 6 7 8 9 10 11 12 | <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version> 1.0 . 0 -cdh5. 4.4 </version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-protocol</artifactId> <version> 1.0 . 0 -cdh5. 4.4 </version> </dependency> |