[Java] Hauptklasse XXX wurde nicht gefunden oder konnte nicht geladen werden

Warum kann ich nicht einfach eine andere Datei kopieren und erstellen? Obwohl die Klassendatei generiert wurde! !!

Erstellen Sie MyApp.java in java_lessons / com / dot / myapp. Erstellen Sie "Practice.java", indem Sie MyApp.java kopieren. Schreiben Sie in Practice.java, was Sie ausprobieren möchten.

Ich habe die äußere Klasse von MyApp.java in "java_lessons / com / dot / myapp / model" eingefügt und geladen, aber ich möchte einen einfachen Code ausprobieren, ohne die äußere Klasse zu laden, also habe ich das Paket gelöscht und importiert Ich habe Practice.java erstellt.

Die Zusammenstellung lief gut, aber ich kann sie nicht ausführen.

Beim Versuch zu rennen

In einer Schleife mit dem Fehler "Hauptklasse com.dot.myapp.Practice wurde nicht gefunden oder konnte nicht geladen werden".

Als ich es nachgeschlagen habe, habe ich es geschafft, den PFAD zu schreiben, aber ich habe ein Testverzeichnis erstellt, das vom Verzeichnis java_lessons getrennt ist, habe Practice.java dorthin verschoben und es kompiliert und ausgeführt.

Ich dachte, dass es nicht um PATH geht.

Aber ich weiß nicht was ich tun soll.

Hmm, was soll ich tun, wenn ich das sage? Ich wünschte, es gäbe jemanden, der Fragen stellen könnte, aber ich bin kein Autodidakt! Sie können im Internet fragen, aber dann möchte ich mich selbst darum kümmern!

Prozess zur Auflösung

Wenn Sie vorerst einige mögliche Ursachen auflisten können und Sie sich die einzelnen Ursachen ansehen, sollten Sie mit ähnlichen Fehlermeldungen in die Suche verwickelt werden! !!

Untersuchen Sie die Ursache, indem Sie die von Ihnen erstellte Datei mit der Quelldatei vergleichen, die ausgeführt werden könnte

  1. main scheint eine spezielle Methode zu sein, es handelt sich also um eine separate Datei. Ist es jedoch seltsam, dass main in derselben Hierarchie vorhanden ist?
  2. Ich habe es gelöscht, weil ich das Paket nicht benutze, aber ich benutze es nicht, aber kann ich es schreiben?
  3. Ist es doch notwendig, den PFAD einzustellen?
  4. Ich verbinde mich mit vagrant mit ssh und führe es aus, aber ich kann die ausführbare Datei nicht lesen, weil die Datei nicht gespeichert werden kann.
  5. Ich verwende Cyberduck für FTP, aber es funktioniert nicht?

Der Rest ist Versuch und Irrtum

1. Aktion

Ich war tief in der Hierarchie von java_lessons, aber zuerst habe ich ein anderes Verzeichnis erstellt und es verschoben.

  1. Erstellen Sie einen Testordner neben java_lessons
  2. Verschieben Sie Practice.java dorthin
  3. Gehen Sie zum Testen im Terminal
  4. Kompilieren und ausführen
  5. Könnte ausgeführt werden → Gibt es nur eine Hauptmethode in derselben Hierarchie?
  6. Erstellen Sie einen Test- / Übungsordner
  7. Dateien verschieben
  8. Kompilieren und ausführen
  9. Ich kann nicht → Es gibt nur eine Haupt ...
  10. Gehen Sie zum erneuten Testen
  11. Kompilieren Sie die Ausführung
  12. Fertig → Das Problem des Verzeichnisses, nicht die Anzahl der Hauptverzeichnisse
  13. Wechseln Sie in das Verzeichnis mit der Datei, die Sie im Terminal ausführen möchten, und führen Sie sie aus
  14. Es ist geschafft! !!

Ernte Gehen Sie einfach zum Terminal und rennen Sie los.

Die ursprüngliche MyApp könnte jedoch tief in der Hierarchie erstellt werden, oder?

Es gibt also eine Möglichkeit, dies zu tun, ohne zum Terminal gehen und es dann ausführen zu müssen.

Damit

2. Aktion

Ich benutze das Paket nicht, aber lassen Sie uns das Paket vorerst deklarieren!

package com.dot.myapp;

Damit am Anfang das erste Verzeichnis, das heißt, Geben Sie Practice.java an java_lessons / com / dot / myapp zurück und kompilieren Sie.

Ich hab es geschafft.

Ernte Wenn Sie ein Paket deklarieren, können Sie es auch dann ausführen, wenn Sie sich tief in der Hierarchie befinden. Aber muss ich die Klasse eine Ebene tiefer in das Verzeichnismodell schreiben, obwohl ich sie nicht verwende?

Experimentieren Sie, indem Sie die Datei hier erneut verschieben.

Gehen Sie zu java_lessons / com, deklarieren Sie package com; und führen Sie es aus.

erledigt

Ernte Wenn es sich unter dem Verzeichnis befindet, in dem sich das Terminal befindet, schreiben Sie das Verzeichnis für diese Datei in die Paketdeklaration!

Ihre eigene Schlussfolgerung

Ich denke, dass das Packen eine Möglichkeit ist, Dateien mit nur Funktion zu verwalten und im Modell in PHP zu definieren, aber wenn es ausgeführt wird, muss es geschrieben werden, wenn es sich in dem Verzeichnis befindet, in dem sich das Terminal befindet. Ding.

Deine eigene Ernte

Ich habe am Anfang zufällig eine Lösung gefunden, nachdem ich einige Ursachen aufgelistet hatte, aber ich frage mich, ob es trotzdem schnell geht, verschiedene Dinge auszuprobieren.

Selbst wenn Sie nach der Fehlermeldung suchen, kann sie stecken bleiben, aber es ist besser, selbst darüber nachzudenken und zu versuchen, sie zu lösen.

Durch die Vertiefung Ihres Verständnisses ist es einfacher, mögliche Ursachen in ähnlichen Situationen aufzulisten, wenn nicht in derselben Situation, was zu einer schnelleren Lösung führt!

Wie auch immer, lasst uns für uns selbst denken und es selbst lösen, um zu beschleunigen!

Recommended Posts

[Java] Hauptklasse XXX wurde nicht gefunden oder konnte nicht geladen werden
Fehler: Hauptklasse nicht gefunden oder konnte nicht geladen werden
Wenn macOS Catalina sagt "Fehler: Hauptklasse XX wurde nicht gefunden oder konnte nicht geladen werden"
"Fehler: Hauptklasse XXX nicht gefunden oder konnte nicht geladen werden" tritt auf, obwohl die Hauptklasse vorhanden ist
Heutiger Java-Fehler: Fehler: Hauptklasse konnte nicht gefunden oder geladen werden
Spring-Boot-Hauptklasse nicht gefunden
Die Geschichte, dass das Servlet nicht in die Java-Webanwendung geladen werden konnte
FEHLER! Die PID-Datei des MySQL-Servers wurde nicht gefunden!
HttpServletRequest-Klassendatei nicht gefunden
Fehler beim Finden des Symbols bei neuer Klasse in einer anderen Java-Datei