Ich habe zwei Probleme beim Kompilieren und Ausführen eines Eclipse-Java-Projekts über die Befehlszeile. Das funktioniert gut, wenn ich gerade von der Eclipse-IDE laufe. Ich habe versucht zu googeln, aber ich konnte das Ding nicht richtig funktionieren lassen. Jede Hilfe wird sehr geschätzt.
Problem 1: Wenn ich versuche, von einem anderen Speicherort als dem Verzeichnis zu kompilieren, in dem sich die .java-Datei befindet, wird der Fehler " kann nicht gelesen: myfile.java " ausgegeben. Aber wenn ich in dieses Verzeichnis migriere, kompiliert es.
Der Befehl, den ich gab, ist (in einem anderen Verzeichnis):
javac -cp C: \ ABC \ src \ XYZ myfile.java
Der Befehl, den ich im XYZ-Verzeichnis angegeben habe:
javac myfile.java
Das erzeugte zwei .class-Dateien myfile.class und Testing_Thread.class (ich denke das, weil ich einen Thread in meinem Code habe)
Problem 2: Nachdem ich in seinem Verzeichnis kompiliert habe, wenn ich versuche, das Programm auszuführen, bekomme ich den Fehler " Ausnahme im Thread" main "java.lang.NoClassDefFoundError: myfile (falscher Name: XYZ /myfile.java) ", auch wenn ich versuche, aus dem XYZ-Verzeichnis zu starten. Ich bekomme den gleichen Fehler, wenn ich versuche, von einem anderen Ort zu starten
Der Befehl, den ich im XYZ-Verzeichnis angegeben habe:
java myfile
Der Befehl, den ich an einem anderen Ort gegeben habe:
java -cp C: \ ABC \ src \ XYZ myfile
Ich füge auch eine Hierarchie meiner Verzeichnisstruktur an, wenn es hilfreich ist:
Diese Beispiele nehmen die folgende Quellstruktur an:
%Vor%Wo D.java ist:
%Vor% Das erste Problem, das nicht lesen kann: myfile.java , liegt darin, dass es nicht korrekt ist, die Befehlszeilenoption cp
auf Ihren Quellcode zu verweisen.
Dies sollte stattdessen der folgende sein, wobei javac
von Ihrem Quellordner ausgeführt wird und wir relative Pfade zu den Quelldateien verwenden können (HINWEIS - javac
wird hier vom Quellordner ausgeführt):
Oder, wo wir vollständige Pfade zu den Quelldateien angeben, und javac
kann von überall ausgeführt werden (HINWEIS - javac
wird hier von C:\
ausgeführt):
Beide oben genannten Optionen führen dazu, dass Ihre Klassendateien im selben Ordner wie die Quelle erstellt werden. I.e .:
%Vor% Wenn Sie beim zweiten Problem versuchen, eine Klasse mit einem Paketnamen von "innerhalb" des Pakets auszuführen, führt dies dazu, dass der Name falsch ist (HINWEIS - java
wird hier innerhalb des Pakets ausgeführt) ):
Um die Klasse D
auszuführen, sollten Sie sich im Paket 'root' befinden und das vollständig qualifizierter Klassenname . I.e .:
Hinweis Ich erhalte eine Ausnahme, da die Klasse D
keine Hauptmethode hat und daher nicht ausgeführt werden kann. Um das Problem zu beheben, fügen wir eine Hauptmethode hinzu:
und erneut ausführen:
%Vor%Tags und Links eclipse java command-line