Java-Befehlszeilen-Probleme mit .jar-Bibliotheken
Habe ich eine einzelne .java (driver.java) Datei, die ich versuche zu kompilieren, erstellen und ausführen von der Kommandozeile. Es nutzt die externe Bibliothek namens EXT.jar
deren Struktur ist nur ein Ordner namens EXT mit ein paar Dutzend Klassen innerhalb es.
Also ich ausführen:
javac -cp EXT.jar driver.java
Diese kompiliert die Klasse einfach nur gut.
dann, wenn ich ausführen:
java -cp EXT.jar driver
Bekomme ich eine java.lang.NoClassDefFoundError
.
Seltsam genug, wenn ich entpacken Sie das JAR (so, jetzt habe ich einen Ordner in das root-Verzeichnis genannt Alf), der Letzte Befehl funktioniert Prima!! Treiber ausgeführt wird!
Gibt es eine Möglichkeit, ich kann das driver.class Blick für die Notwendigkeit von class-Dateien aus EXT.jar/EXT/*class
anstelle der eigentlichen EXT-Ordner?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist kompilieren der Klasse in das lokale Verzeichnis. Also, wenn Sie es starten, müssen Sie das aktuelle Verzeichnis in den classpath. E. g.:
Oder in linux:
Mit der Art, wie Sie es jetzt haben, sagst du, dass der classpath ist nur EXT.jar (zusammen mit dem, was ist in der CLASSPATH-Umgebungsvariable) und sonst nichts (das ist der Grund, warum das aktuelle Verzeichnis, wo driver.class liegt, ist ausgeschlossen)
java -cp .:libs/one.jar:libs/two.jar MainClass
java MyApp -cp .;EXT.jar
Während dies funktionierte gut:java -cp .;EXT.jar MyApp
java -cp .:libs/* MainClass
umfasst die n-Gläser Fall