hbase客户端-java.lang.classnotfoundexception:org.apache.hadoop.crypto.key.keyprovidertokenissuer

mwecs4sa  于 2021-06-07  发布在  Hbase
关注(0)|答案(1)|浏览(1451)

我正在尝试运行一个连接到hbase的遗留项目。
它具有(除其他依赖项外):

<dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.2.0-cdh5.7.2</version>
    </dependency>

当应用程序在方法中启动并到达此代码时 createConnection 在班级里 org.apache.hadoop.hbase.client.ConnectionFactory :

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

所以我在找这一类 KeyProviderTokenIssuer 但没有找到它的来源。
为什么系统试图使用这个类,我应该从哪里得到它? Crypto 程序包不属于 hbase-client 我不认为这种依赖https://mvnrepository.com/
有没有可能这里有一些库不匹配?
我在windows上运行。有关系吗?

mtb9vblg

mtb9vblg1#

在执行了以下几个步骤之后,我能够克服这个问题:
在这篇文章之后,我下载了 hadoop-common-2.2.0-bin-master.zip 并将其完全解压到 C:\Program Files\apache\hadoop\bin 我添加了 HADOOP_HOME param指向系统变量,指向 C:\Program Files\apache\hadoop 我加入了 PATH 变量的值 %HADOOP_HOME%\bin 因为我的hadoop是2.6.0版本,所以我检查并确保所有与hadoop相关的依赖项都在该版本中。
我跑了 mvn dependency:tree 发现其中一个依赖项jar带来了 org.apache.hadoop:hadoop-hdfs-client:jar:3.2.0 所以我把它排除在依赖项之外:

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

一些帮助我的网址:
泰伦德
winutils.exe存储库
srccodes.com网站

相关问题