我正在尝试运行一个连接到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上运行。有关系吗?
1条答案
按热度按时间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
所以我把它排除在依赖项之外:一些帮助我的网址:
泰伦德
winutils.exe存储库
srccodes.com网站