Frage

Ich habe Probleme mit der Verwendung von externen Gläsern in meiner Datei. Ich habe immer bekommen:

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

Und diese Datei auf dem Classpath ist, ich bin Optionen einstellen, wenn Glas ausgeführt werden:

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

Diese Datei erfolgreich kompiliert, nachdem Sie diesen Befehl aufrufen:

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

Was tun?

War es hilfreich?

Lösung 3

Mein Problem war, dass ich Classpath einstellen -classpath Option und Lauf jar, die die -classpath Option wird ignoriert.

Ich habe hinzugefügt Gläser in Manifest-Datei und das funktioniert.

Dieses ähnliches Problem: Einstellen mehrerer Gläser in Java Classpath

Andere Tipps

JVM java.lang.NoClassDefFoundError werfen, wenn der Klassenlader nicht statisch Mitglieder einer Klasse initialisieren kann, sagt eine Ausnahme ausgelöst wird. Oder wenn es nicht eine andere Klasse finden, die von einem statischen Initialisierer in dieser Klasse zugegriffen wird. Das sieht nach, was geschieht, wenn Klassenlader-Reifen HBaseConfiguraton zu laden, diese Klasse HBaseConfiguration ist etwas erwarten, dass es das führt zu einer Ausnahme erhalten Kanone, die verloren geht.
Pech Debuggen diese Art von Fehlern.
BEARBEITEN: Der einfachste Weg, um herauszufinden, was fehlt, ist das Programm in einem Debugger mit allen HBase Quellen verbunden zu starten, unter Eclipse-sagen und verfolgen, HBaseConfiguration.create() Anruf.

Es wäre wirklich praktisch, wenn Java uns gibt einen Fehler oder zumindest eine Warnung in dieser Situation. Ich glaube, eine Lösung ist Ihr Glas wie diese

auszuführen
java -cp "myclasspath":myjarfile.jar MyClassname
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top