2014-12-01 25 views
5

Ho ricevuto un progetto IntelliJ da qualcun altro, ma per me non eseguirà nemmeno le classi più semplici.ClassNotFoundException in IntelliJ IDEA

Come esempio veloce, la seguente classe getterà un ClassNotFoundException senza errori di compilazione:

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); 
    } 
} 

Questo getterà il seguente errore:

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 

La struttura del file è il seguente: <git root>/src/myPackage/Main.java

Ho impostato la cartella 'src' come 'cartella sorgente'. La mia applicazione non ha errori del compilatore. Ho invalidato le cache più volte, ma senza alcun effetto. Nelle impostazioni del mio modulo le dipendenze del modulo contengono <Module source> e jdk 1.8.

Non riesco a trovare la risposta da queste parti (google) ovunque, e per me sembra che questo errore abbia a che fare con il modo in cui IntelliJ gestisce il progetto. Quando ho estratto il progetto per la prima volta, la cartella src NON era stata impostata come cartella di origine, il che probabilmente significa che potrei perdere anche altre impostazioni.

+2

Il repository git contiene un progetto intellij? Se è così, è probabile che si tratti del problema. Tipicamente quando si gestisce un progetto, il 90% dei file di progetto non sono rilevanti per il codice e possono essere specifici per macchina/OS. È meglio gitignore dei file di progetto e creare un nuovo progetto su ciascuna macchina per sviluppatori. Suggerirei di cancellare il progetto (non il codice) e di crearne uno nuovo. Quindi gitignore tutti i file intellij per evitare questo in futuro –

+0

@ZackNewsham Cosa intendi per "progetto"? La cartella .idea? – yts

+0

@yts esattamente, è lo stesso per tutti i netbeans di IDE è un nbproject però. –

risposta

1

Il suggerimento di Zack Newsham mi ha aiutato. Ecco quello che ho fatto:

  1. eliminati .iml il file
  2. File> Nuovo> Progetto, specificata la cartella esistente con il codice
  3. configurazione progetto completato (manifesti, manufatti).

Ora il progetto è in esecuzione.

Naturalmente ci possono essere altri motivi per ClassNotFound. Tuttavia, quando tutto sembra ok o se l'errore si verifica dopo aver funzionato prima, prova questi semplici passaggi.

+0

Mentre ci sei, dovresti aggiungere i file di progetto di IntelliJ al documento .gitignore del tuo progetto. Vedi https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore – nasukkin