java.lang.ClassNotFoundException beim Ausführen in IntelliJ IDEA

Ich erstelle ein Programm, um mit databaseen zu arbeiten, und ich bekomme den folgenden Fehler beim Kompilieren in IntelliJ IDEA. Weiß jemand warum das passiert und wie ich es lösen könnte?

Bildbeschreibung hier eingeben

Der Fehler, den Sie erhalten, tritt nicht bei der Kompilierung auf, sondern beim Versuch, Ihre Anwendung auszuführen. Table.class daran, dass Java die Datei Table.class im db Unterverzeichnis des Projektausgabeverzeichnisses (classnpfad) nicht finden konnte.

Dies kann aus mehreren Gründen geschehen:

  • falsche Hauptklasse in der Run / Debug-Konfiguration ausgewählt
  • Table.java ist von der Kompilierung ausgeschlossen (aus Versehen oder absichtlich, weil es Fehler enthielt und Sie es überspringen wollten, während Sie an anderem Code arbeiteten)
  • Die class wurde nicht kompiliert, da der Schritt ” Build” von den Schritten vor dem Start in der Konfiguration “Run / Debug” ausgeschlossen wurde
  • Das Projekt ist falsch konfiguriert, und für das Verzeichnis, das das Unterverzeichnis db enthält, ist kein Quellstammverzeichnis definiert
  • Table.java hat eine falsche Table.java oder befindet sich in einem anderen Paket
  • Projektpfad enthält einen Doppelpunkt : auf Mac / Linux oder Semikolon ; Unter Windows wird der classnpfad getrennt und der classnpfad wird ungültig. Siehe diesen Thread für Details. Beachten Sie, dass der Finder auf dem Mac Doppelpunkte im Pfad als Schrägstriche darstellen kann.
  • Das Jar kann nicht ausgeführt werden, wenn eines der abhängigen Jars digital signiert ist, da das neue Artefakt die Teilsignatur der Abhängigkeit enthält. Siehe diese Antwort für weitere Details.

In einem korrekt konfigurierten Projekt und mit der richtigen Run / Debug-Konfiguration funktioniert alles gut:

Lauf

  • Das Jar kann nicht ausgeführt werden, wenn eines der abhängigen Jars digital signiert ist, da das neue Artefakt die Teilsignatur der Abhängigkeit enthält. Siehe diese Antwort für weitere Details.

Ich muss noch einmal betonen, was CrazyCoder hier hat.

Die (Oracle) JVM, mit der eine SecurityException ausgetriggers wurde, als Sie versucht haben, eine Jar-Datei auszuführen, die defekte Signaturen enthält. Dies ergab Sinn aus einem “Was ist falsch” -Punkt der Sicht.

Das ist nicht mehr der Fall. Sie casting jetzt tatsächlich ClassNotFoundException s – selbst wenn die class in der Datei vorhanden ist (egal ob sie im Standardpaket / Toplevel oder weit unten in einer verschachtelten Package-Struktur liegt).