2014-12-01 20 views
5

Ich habe ein IntelliJ-Projekt von jemand anderem erhalten, aber es wird nicht einmal die einfachsten Klassen für mich ausführen.ClassNotFoundException in IntelliJ IDEA

Als kurzes Beispiel wird die folgende Klasse ein ClassNotFoundException ohne Compiler-Fehler werfen:

package myPackage; 

public class Main { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
     System.out.println("Soon our GUI will start from here!"); 
     System.exit(0); 
    } 
} 

Dies wird den folgenden Fehler aus:

Exception in thread "main" java.lang.ClassNotFoundException: myPackage.Main 
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:260) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116) 

Process finished with exit code 1 

Die Dateistruktur ist wie folgt: <git root>/src/myPackage/Main.java

Ich habe den Ordner 'src' als 'Quellordner' festgelegt. Meine Anwendung hat keine Compilerfehler. Ich habe die Caches mehrmals ungültig gemacht, aber ohne Wirkung. In meinen Moduleinstellungen enthalten meine Modulabhängigkeiten <Module source> und jdk 1.8.

Ich kann nicht scheinen, die Antwort hier irgendwo (Google) zu finden, und mir scheint es, als ob dieser Fehler mit der Art, wie IntelliJ das Projekt behandelt, zu tun hat. Als ich das Projekt zum ersten Mal gezogen habe, wurde der Ordner src NICHT als Quellordner festgelegt, was wahrscheinlich bedeutet, dass ich auch andere Einstellungen verpasse.

+2

Hat der git Repo ein intellij Projekt enthalten? Wenn ja, ist das wahrscheinlich das Problem. Wenn Sie ein Projekt verwalten, sind normalerweise 90% der Projektdateien für den Code nicht relevant und möglicherweise maschinen-/betriebssystemspezifisch. Es ist besser, die Projektdateien zu erstellen und auf jedem Entwicklungscomputer ein neues Projekt zu erstellen. Ich würde vorschlagen, das Projekt (nicht den Code) zu löschen und ein neues zu erstellen. Dann gitignore alle Intellij-Dateien, um dies in Zukunft zu vermeiden –

+0

@ZackNewsham Was meinst du mit "Projekt"? Der .idea-Ordner? – yts

+0

@yts genau, es ist das gleiche für alle Netbeans von IDE ist jedoch ein nbproject. –

Antwort

1

Zack Newshams Vorschlag half mir. Hier ist, was ich getan habe:

  1. Deleted
  2. Datei Datei .iml> Neu> Projekt, spezifiziert den vorhandenen Ordner mit Code
  3. abgeschlossen Projekt-Setup (Manifest, Artefakte).

Jetzt läuft das Projekt.

Natürlich kann es andere Gründe für ClassNotFound geben. Wenn jedoch alles in Ordnung zu sein scheint oder der Fehler auftritt, nachdem es zuvor funktioniert hat, versuchen Sie diese einfachen Schritte.

+0

Während Sie dabei sind, sollten Sie die Projektdateien von IntelliJ zum .gitignore Ihres Projekts hinzufügen. Siehe https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore – nasukkin