HBase клиент - java .lang.ClassNotFoundException: org. apache .had oop .crypto.key.KeyProviderTokenIssuer - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь запустить устаревший проект, который подключается к 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 в Google, но не нашел, откуда оно взято.

Почему система пытается использовать этот класс и откуда мне его взять? Пакет Crypto не является частью зависимости hbase-client, и я не вижу его в https://mvnrepository.com/

Возможно, здесь есть какое-то несоответствие библиотеки?

Я работаю на Windows. Это может быть связано?

1 Ответ

0 голосов
/ 13 апреля 2020

Мне удалось преодолеть эту проблему после выполнения нескольких шагов:

  • После этого сообщения я загрузил файл 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

  • Поскольку мой Had oop версии 2.6.0, я проверил и убедился, что все связанные с Had oop зависимости находятся в эта версия.

  • Я запустил mvn dependency:tree и обнаружил, что один из jar зависимостей приносит с собой 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>
    

Некоторые URL, которые мне помогли:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...