[英]Info:Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.util.Bytes
[英]HBase client - java.lang.ClassNotFoundException: org.apache.hadoop.crypto.key.KeyProviderTokenIssuer
我正在尝试运行一个连接到 HBase 的遗留项目。
它具有(在其他依赖项中):
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.0-cdh5.7.2</version>
</dependency>
当应用程序启动并在 org.apache.hadoop.hbase.client.ConnectionFactory 的org.apache.hadoop.hbase.client.ConnectionFactory
中的createConnection
方法中到达此代码时:
try{
....
return (Connection) constructor.newInstance(conf, managed, pool, user);
} catch (Exception e) {
throw new IOException(e);
}
抛出并捕获了一个异常,说:
java.lang.NoClassDefFoundError: org/apache/hadoop/crypto/key/KeyProviderTokenIssuer
所以我在 Google 中寻找 KeyProviderTokenIssuer 的KeyProviderTokenIssuer
但没有找到它应该来自哪里。
为什么系统要尝试使用此 class,我应该从哪里获得它? Crypto
package 不是hbase-client
依赖项的一部分,我在https://mvnrepository.com/ 中看不到这种情况
这里是否可能存在一些库不匹配?
我在 Windows 上运行。 可以相关吗?
在执行了几个步骤后,我能够克服这个问题:
在这篇文章之后,我下载了hadoop-common-2.2.0-bin-master.zip
文件并完全解压到C:\Program Files\apache\hadoop\bin
夹
我将HADOOP_HOME
参数添加到系统变量中,将其指向C:\Program Files\apache\hadoop
我将%HADOOP_HOME%\bin
的值添加到PATH
变量中
由于我的 Hadoop 是 2.6.0 版本,因此我检查并确保所有 Hadoop 相关依赖项都在该版本中。
I run mvn dependency:tree
and found that one of the dependencies jars is bringing with it the jar of org.apache.hadoop:hadoop-hdfs-client:jar:3.2.0
so I excluded it from the dependency:
<dependency> <groupId>com.example</groupId> <artifactId>bla</artifactId> <version>1.0.1</version> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs-client</artifactId> </exclusion> </exclusions> </dependency>
一些对我有帮助的网址:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.