HBase 客户端 - java.lang.ClassNotFoundException:org.apache.hadoop.crypto.key.KeyProviderTokenIssuer
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
的 class 中的 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
的 class,但没有找到它的来源。
为什么系统要使用这个 class 我应该从哪里得到它? Crypto
包不是 hbase-client
依赖的一部分,我在 https://mvnrepository.com/
中没有看到这样的包
这里是否有一些库不匹配?
我运行正在 Windows。会不会有关系?
我在执行了几个步骤后解决了这个问题:
在this post之后,我下载了hadoop-common-2.2.0-bin-master.zip
的文件并完全解压到C:\Program Files\apache\hadoop\bin
的文件夹中
我在系统变量中添加了HADOOP_HOME
参数,指向C:\Program Files\apache\hadoop
我在 PATH
变量中添加了 %HADOOP_HOME%\bin
的值
由于我的 Hadoop 是 2.6.0 版,我检查并确保所有与 Hadoop 相关的依赖项都在该版本中。
I 运行 mvn dependency:tree
发现其中一个依赖项 jar 带来了 org.apache.hadoop:hadoop-hdfs-client:jar:3.2.0
的 jar,所以我将它排除在依赖项之外:
<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>
一些对我有帮助的网址:
我正在尝试 运行 连接到 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
的 class 中的 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
的 class,但没有找到它的来源。
为什么系统要使用这个 class 我应该从哪里得到它? Crypto
包不是 hbase-client
依赖的一部分,我在 https://mvnrepository.com/
这里是否有一些库不匹配?
我运行正在 Windows。会不会有关系?
我在执行了几个步骤后解决了这个问题:
在this post之后,我下载了
hadoop-common-2.2.0-bin-master.zip
的文件并完全解压到C:\Program Files\apache\hadoop\bin
的文件夹中
我在系统变量中添加了
HADOOP_HOME
参数,指向C:\Program Files\apache\hadoop
我在
PATH
变量中添加了%HADOOP_HOME%\bin
的值
由于我的 Hadoop 是 2.6.0 版,我检查并确保所有与 Hadoop 相关的依赖项都在该版本中。
I 运行
mvn dependency:tree
发现其中一个依赖项 jar 带来了org.apache.hadoop:hadoop-hdfs-client:jar:3.2.0
的 jar,所以我将它排除在依赖项之外:<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>
一些对我有帮助的网址: