Im Allgemeinen verwenden wir Tools zum Bearbeiten und Debuggen von Code, wie Eclipse, Manven, Android Studio, Sublime, Vim, Notepad, Notepad usw.
Wenn wir Projekt- und Java-Klassendateien mit Eclipse Android Studio usw. erstellen, haben sie alle Paketnamen. Sie werden normal mit Tools kompiliert und ausgeführt, aber wenn wir zur Ausführung zur Befehlszeile wechseln:
javac xxx.java
java xxx
Es ist sehr wahrscheinlich, dass找不到或无法加载主类
Wenn wir Java zum ersten Mal lernen, ist der Paketname (Paket) nicht in der Klassendatei festgelegt. Achten Sie in diesem Fall auf den Klassenpfad, und es gibt im Grunde kein Problem. Wenn wir jedoch Tools (Eclipse, Android Studio) zum Schreiben von Code verwenden, befindet sich der Speicherort der Codedatei in einem durch den Paketnamen getrennten Verzeichnis . Beachten Sie, dass es sich um ein relatives physisches Verzeichnis (com/eagle/app) handelt wird im Code angegeben. Ohne den Paketnamen kann es als virtuelles Verzeichnis (com.eagle.app) betrachtet werden. In diesem Artikel werden hauptsächlich die Fehlerursache und die richtige Lösung erläutert, wenn kein Problem mit dem Klassenpfad und der Systemumgebungsvariablen PATH vorliegt.
Die Codedatei ist wie folgt sehr einfach:
package com.eagle.app; public class MainJava { public static void main(String[] args) { if (args != null) { for (String arg : args) { System.out.println("arg = " + arg); } System.out.println("arg = " + args); } else { System.out.println("args = " + null); } }
Wie oben gezeigt, am Beispiel von Android Studio
1 Unter dem Projektverzeichnis befindet sich ein src-Verzeichnis , aber es enthält die Dateien der gesamten App, nicht das „src“-Verzeichnis des Codes; im Fall von Eclipse ist das src-Verzeichnis das Codeverzeichnis.
2. Dies ist das „src“-Verzeichnis des Codes, und es gibt ein „Verzeichnis“, das unserem Paketnamen com/eagle/app entspricht
Um MainJava zu kompilieren, verwenden Sie:
//cd 到app目录 javac MainJava.java
oder
//cd 到eagle 目录 javac app/MainJava.java
oder sogar
//cd 到main目录 javac java/com/eagle/app/MainJava.java
Es ist alles in Ordnung. Natürlich kann es ein beliebiger Ort + relatives Verzeichnis sein.
Gehen wir zurück und erklären: Relativ zum aktuell ausgeführten Verzeichnis (z. B. App-Verzeichnis, Eagle-Verzeichnis, Hauptverzeichnis) ist der physische Pfad ein gültiger Computerpfad (xxx/xxx/xxx), daher ist der Name relativ zum physischer Weg.
Wenn etwas schief geht, muss der Weg falsch sein.
Bemerkungen: Das Codeverzeichnis wird beim Erstellen einer neuen Codedatei anhand des Startverzeichnisses des Paketnamens bestimmt.
Das ist etwas interessant, lassen Sie mich betonen. Virtueller Pfad des Paketnamens: xxx.xxx.xxx , kein durch „/“ getrenntes Verzeichnis, daher wird es als virtueller Pfad bezeichnet.
Im Bild oben ist 2 der Java-Code und 1 die durch die Tool-Kompilierung generierte Bytecode-Datei. Um nun MainJava.class auszuführen, lautet der richtige Befehl:
//cd in das Hauptverzeichnis in 1 und Nicht mehr com oder ein niedrigeres Verzeichnis Der Java-Befehl erkennt Folgendes: Der Parameter ist der Paketname.
Fehler: Die Hauptklasse com.eagle.app.MainJava.class kann nicht gefunden oder nicht geladen werdenF :GSProjectjavatestbuildclassesjava> ;java maincom.eagle.app.MainJava
Fehler: Die Hauptklasse maincom.eagle.app.MainJava kann nicht gefunden oder geladen werdenOkay, jetzt verschieben wir das im Bild oben mit 1 eingekreiste Verzeichnis in das javatest-Verzeichnis. Wir führen java com.eagle.app.MainJava
F:\GSProject>cd javatest\build\classes\java\main F:\GSProject\javatest\build\classes\java\main>java com.eagle.app.MainJava
1 ist Paket com.eagle.app; stellen Sie sicher, dass der Javac-Dateipfad **/xxx/xxx/xxx/Name.java** und der
Java-Dateipfadxxx ist .xx.x.Name
, bring keinen Unterricht mit.
Das obige ist der detaillierte Inhalt vonSo lösen Sie die Java-Fehlermeldung „Hauptklasse konnte nicht gefunden oder geladen werden'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!