Führen Sie das Eclipse-Projekt über die Befehlszeile aus

8

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:

    
sachin11 08.05.2012, 07:04
quelle

1 Antwort

8

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.

%Vor%

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):

%Vor%

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):

%Vor%

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) ):

%Vor%

Um die Klasse D auszuführen, sollten Sie sich im Paket 'root' befinden und das vollständig qualifizierter Klassenname . I.e .:

%Vor%

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:

%Vor%

und erneut ausführen:

%Vor%     
Paul Grime 08.05.2012, 07:52
quelle

Tags und Links