NoClassDefFoundError, даже если Jar присутствует в пути к классу

#java #jdbc #impala

Вопрос:

У меня странная проблема, я пытаюсь загрузить класс com.cloudera.impala.jdbc41.Driver с помощью Class.forName(«com.cloudera.impala.jdbc41.Driver»), но во время выполнения возникает исключение. Может кто-нибудь поправить меня в том, что я здесь делаю не так?

 java.lang.NoClassDefFoundError: Could not initialize class com.cloudera.impala.jdbc41.Driver
 

Печать пути к классу с помощью следующего фрагмента кода печатает Jar, присутствующий в пути к классу.

 System.out.println(System.getProperty("java.class.path"))
 

Комментарии:

1. Пожалуйста, предоставьте полный список исключений. Скорее всего, это покажет причину, по которой класс не удалось инициализировать.

2. Я бы также убедился, что вы используете совместимый JDK. Я думаю, что драйвер JDBC 4.1 должен работать с 7 и 8.

Ответ №1:

Сообщение об ошибке «Не удалось инициализировать класс», вероятно, означает, что класс был найден, но во время инициализации возникло исключение, возможно, в статическом блоке.

Это приводит к тому, что загрузчик классов не может «найти» класс. Сбивает с толку, я знаю. Посмотрите, есть ли в этом классе какие-либо статические блоки, и если да, установите там точку останова отладчика, чтобы увидеть, что происходит.