繁体   English   中英

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 的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM