2010-03-29 4 views
18

Ho implementato con successo e ho eseguito diversi tutorial Scala in Eclipse utilizzando il plug-in Scala. Poi, all'improvviso, ho provato a compilare ed eseguire un esempio, e questo errore si avvicinò:noClassDefFoundError utilizzando il plug-in Scala per Eclipse

Exception in thread "main" java.lang.NoClassDefFoundError: hello/HelloWorld 
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

Dopo questo punto non potevo più eseguire qualsiasi programma alla Scala di Eclipse. Ho provato a pulire e ricostruire il mio progetto, chiudendo e riaprendo il mio progetto, chiudendo e riaprendo Eclipse.

versione di Eclipse numero 3.5.2 e 2.8.0 plug-Scala

Ecco il codice originale:

package hello 

object HelloWorld { 
def main(args: Array[String]){ 
    println("hello world") 
} 
} 
+0

Esiste un file HelloWorld.class in $ PROJECT/bin/hello? (È possibile utilizzare la vista "Navigatore" per verificare). –

risposta

10

Se vedete questo, quando si tenta di eseguire come applicazione Scala quindi il più probabile la spiegazione è che il tuo progetto non è stato compilato e non sono stati generati file di classe. Si prega di verificare se questo è il caso: guardare nella cartella di output del progetto per ciao/HelloWorld.class.

Se il tuo progetto non è stato compilato potrebbe essere perché c'è un errore che hai perso (e se questo errore non viene segnalato nella vista Problemi che potrebbe essere un bug, in tal caso si prega di aprire un ticket su Trac) o perché hai disattivato le build automatiche e non hai fatto una compilazione manuale del tuo progetto.

+0

Nessun file nella cartella di output. Sfortunatamente ho reinstallato il mio ambiente ieri per far funzionare tutto in modo da non poter ulteriormente risolvere il problema. –

+0

Per me sembrava che le Configurazioni di esecuzione fossero in qualche modo corrotte o non impostate correttamente, ma ho trovato una "soluzione" - vedi sotto –

+1

Ho avuto lo stesso problema: HelloWorld $ .class era nella cartella di output, ma non HelloWorld. classe. La pulizia ha risolto il problema. – thSoft

2

Quando si esegue "clean" non un-hose di Eclipse, tentare di salvare il mio lavoro, uscire da Eclipse e riavviare. Questo di solito fa andare di nuovo le cose, ma non sempre. Alcune volte ho dovuto aggiornare il plugin Scala con una versione più recente (sto usando l'ultima notte), per far funzionare di nuovo le cose. Dubito che questo abbia funzionato perché il nuovo plugin è riuscito a correggere il bug, ma piuttosto mi aspetto che il caricamento del nuovo plugin dia all'intero sistema di Eclipse-Scala un "reset totale" che lo renda libero.

3

Ho avuto lo stesso problema. Il progetto non si compila ma non ci sono errori evidenziati e AFAIK il codice è OK. Sembra essere un problema con Run Configurations.

Soluzione 1: Eliminare la configurazione di esecuzione esistente per l'oggetto e crearne uno nuovo

Soluzione 2: Creare un nuovo oggetto e tagliare/incollare tutto il codice in quel file

0

I avevo spostato la mia unica e unica classe/oggetto/applicazione in un pacchetto, ma non avevo aggiunto la dichiarazione package.

sbt compilato e funzionante; eclipse non sarebbe

Aggiunta la dichiarazione package nella parte superiore del file risolto.

Plugin Scala 2.8.3; nessun errore di compilazione

1

Stavo ricevendo questo problema in un progetto che combinava .java & .scala file. La soluzione per me è stato:

  1. rimuovere tutti i file .java
  2. Modificare il codice Scala, se necessario in modo che compila senza di loro.
  3. Aggiungere di nuovo i file .java.
  4. Modificare il codice scala indietro.

Le altre soluzioni fornite qui non hanno funzionato per me. Ho provato: pulire il progetto, riavviare Eclipse, chiudendo - & - aprire il progetto, creando un nuovo file .scala. Nessuna gioia.

Utilizzo Eclipse 3.7 (ultima versione stabile), Scala IDE 2.0.0 e Scala 2.9 su Ubuntu Linux 11.10.

I sintomi nel mio caso erano:

  • Il mio progetto era di lavoro, ma poi si è fermato compilazione senza alcuna ragione apparente. L'IDE non ha mostrato errori di compilazione per i file .scala, ma nella directory di output non c'erano file .class & Ho ottenuto un errore NoClassDefError se ho provato a eseguire qualcosa.
  • Se ho creato un errore intenzionale in un file .scala, questo è stato rilevato come errore di compilazione.
  • I file .java registravano errori a causa delle classi di scala mancanti.

Suppongo che ci sia probabilmente un baco di boot da qualche parte nel plugin IDE per i mix .java/.scala. Ho realizzato progetti ibridi con questa configurazione senza problemi, quindi è attivato solo in alcune situazioni. Non so cosa sia il trigger, ma una volta attivato, non c'è una soluzione carina.

0

Ho riscontrato anche questo errore ma dopo aver eseguito i suggerimenti qui (pulizia, eliminazione della configurazione di esecuzione, ecc.), Mi sono reso conto che ho impostato erroneamente lo spazio di lavoro, ecco perché la classe non viene trovata.

Un'indicazione che questo è un problema è quando si verifica lo stesso errore quando si tenta di compilare un progetto java.

0

Ho riscontrato questo errore (la compilazione funzionava in sbt ma non è riuscita in eclissi) quando ho creato un nuovo oggetto pacchetto denominato "comune". L'eliminazione dell'oggetto pacchetto in eclissi ha causato l'errore di compilazione di andare via. Non c'era niente in esso.

Stavo usando sbt-eclipse per creare il progetto eclipse. Sto usando scala eclipse 3.0.0-vfinal-20130326-1146-Typesafe.