External jars & HBase in classpath

I'm having problem with using external jars in my file. I always get:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration`  
at this line: `Configuration config = HBaseConfiguration.create();

And this file is on the classpath, I'm setting options when running jar:

$ java -jar hbase.jar -classpath "/usr/lib/hbase/*:/usr/lib/hadoop/*"

This file compiles successfully after invoking this command:

$ javac -classpath "/usr/lib/hbase/*:/usr/lib/hadoop/*" HBaseScanner.java

What to do?

1
задан slm 16 November 2015 в 18:31
поделиться

1 ответ

JVM будет бросать java.lang.NoClassDefFoundError, если загрузчик класса не может инициализировать статические члены класса, скажем, брошено исключение. Или если он не может найти другой класс, к которому обращается статический инициализатор в этом классе. Это похоже на то, что происходит, когда загрузчик классов пытается загрузить HBaseConfiguraton, этот класс HBaseConfiguration ожидает чего-то, что он не может получить, что приводит к исключению, которое теряется.
Не повезло с отладкой такого рода сбоев.

EDIT: Самый простой способ выяснить, чего не хватает, - запустить программу в отладчике со всеми подключенными источниками HBase, скажем, в Eclipse, и отследить вызов HBaseConfiguration.create().

2
ответ дан 2 September 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: