2012-09-10 17 views
5

Sto cercando di eseguire JUnit prove da Eclipse, ma durante l'esecuzione di questi test, sto ottenendo ClassNotFound EccezioneEsecuzione di test JUnit da Eclipse dà ClassNotFound errore

completa Stack Trace segue:

java.lang.NoClassDefFoundError: of Caused by: java.lang.ClassNotFoundException: of at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Exception in thread "main"

Ho cercato google per questo e ho trovato che un paio di ragazzi hanno affrontato questo problema, ma nessuno di loro sembra risolvere il mio problema. Questo probabilmente può essere dovuto a differenza di piattaforme

La mia piattaforma di sviluppo è la seguente

OS: Windows XP 
Eclipse JUNO 
JUnit4 
Maven2 

media mentre, se corro questo progetto utilizzando Maven Corre assolutamente bene.

La parte più strana per me è il nome della classe per cui viene generata l'eccezione ClassNotFound. Il nome della classe è of.

Questo è ciò che mi soffia completamente.

Inoltre, quale traccia di stack mai elencata sopra, è tutto ciò che ottengo quando ottengo l'errore nient'altro.

Sono stato bloccato in questo problema per 2 giorni, qualsiasi aiuto sarebbe molto apprezzato.

+2

Vuol fare un Progetto-> Pulire il vostro progetto in Eclipse risolvere il problema? –

+0

Che tipo di classe è questa? di?? –

+0

".ClassNotFoundException: ?? of ?? at ??" NON è un nome di classe, non riesce a riportare correttamente i dettagli dell'errore. Maven di solito dedica un po 'di tempo alla configurazione di un progetto prima di eseguire qualsiasi cosa - controllare cosa aggiunge al classpath del progetto che non si ha già in classpath eclipse. Se ** tu ** non stai usando il caricatore di classi dinamico nel tuo metodo principale, sospetto che sia la classe JUnit che non riesce a trovare. –

risposta

11

Ho provato tutto menzionato qui e in altri posti. Alcune delle soluzioni che le persone offerto erano:

  1. Cambiare la cartella di output per il test
  2. Creare un costruttore personalizzato per il progetto che avrebbe eseguito test-compilazione da Maven
  3. Spostare le dipendenze Maven più elevato nel Ordine ed esportazione lista nel percorso di costruzione del progetto

Ce ne sono stati molti, molti altri, ma quello che ho trovato funzionante era il seguente: Chiudere l'ambiente di sviluppo. Elimina i vasi usati dal progetto dal mio repository Maven locale. Apri l'IDE. Costruisci il progetto. Esegui il test.

Dopo ore di battere la testa contro la tastiera e seguendo le soluzioni suggerite, questo ha funzionato! Se ciò non funziona, puoi provare a cercare le soluzioni che ho elencato sopra.

+0

All'improvviso i test hanno iniziato a funzionare per me 4-5 giorni dopo la pubblicazione del problema, ma non mi ero mai reso conto, era a causa di questi passaggi che ho seguito per altri motivi, ha iniziato a funzionare. –

+0

Grazie a @gffny, il passaggio 3 funziona per me. –

+0

potrebbe semplicemente solo Project-> Clean ... –

0

provare a passare la prospettiva di JUnit in Eclipse ed eseguire le prove di nuovo

+0

Questo non dovrebbe fare davvero la differenza? – Ren

1

So che questa domanda è già stato risposto, ma ho ancora condividere la mia soluzione qui,

  1. Assicurarsi che la cartella di output di 'src/test/java' è stato impostato a 'destinazione/test- classi ', questo è stato detto in molti altri post quindi non ripeterò qui.

  2. Se ancora non funziona, è molto probabile che ci siano errori durante la compilazione delle classi di test dell'unità. Vai a 'Finestra' -> apri la vista 'Registro errori', dovresti essere in grado di vedere i dettagli del messaggio di errore.

per il mio caso, un barattolo di dipendenza precedentemente scaricato è in qualche modo danneggiato a causa di problemi di rete, quindi basta cancellare il barattolo dal repository locale e utilizzare 'Maven' -> 'Configurazione update' per scaricarlo di nuovo.

Quindi tutto funziona!

7

Fare clic con il pulsante destro del mouse sul nome del progetto in Eclipse e scegliere "Maven -> Aggiorna progetto" risolverà spesso questo problema.

+1

Non sono sicuro del motivo per cui questo è stato downvoted, in quanto questo ha funzionato per me, quindi dovrei svenderlo. Nella finestra di dialogo "Aggiorna progetto Maven", ho anche assicurato che "Force Update of Snapshots/Release" era spuntato come "Clean Projects". Una volta completato l'aggiornamento di Maven, i miei test sono stati eseguiti. Nota anche: sto usando SpringSource ToolSuite versione 3.6.2 – Phil

0

Nonostante tutte le risposte e altri post che ho visto. Fornirò un riassunto del mio sforzo:

è probabile che la configurazione di questo progetto non si adatti ad altri progetti nello stesso spazio di lavoro. (come risolvere questo è probabilmente un'altra domanda)

quindi, chiudere questo spazio di lavoro, avviare uno spazio di lavoro pulito solo per questo progetto.

0

Era di fronte lo stesso problema. Questo semplice passo l'ha risolto per me.

  1. Rimuovere JUnit da costruire il percorso del progetto e aggiungerlo di nuovo.

  2. Se impostato su creare automaticamente, l'area di lavoro sarebbe stato costruito di nuovo. Se non impostato su Build Automatically, quindi creare il progetto. Il tuo problema dovrebbe essere risolto.

1

Normalmente Quando costruiamo controlliamo "Skip Tests" nella "scheda di configurazione Run", invece deselezionare "Skip Test" e costruire il progetto i junits dovrebbe funzionare bene. Questa soluzione ha funzionato per me. Run configuration tab for building project

0

Si dovrebbe aggiungere le classi che si utilizzano per esempio (primavera-boot):

@RunWith(SpringRunner.class) 
@SpringBootTest(classes = {DataPoint.class}) 
public class DataPointTest { 

    @Test 
    public void TestBuilder() { 
     DataPoint.Builder builder = new DataPoint.Builder(); 

     DataPoint dataPoint = builder.withCount(4).withFirst(1).build(); 

     assert dataPoint.getCount() == 4 && dataPoint.getFirst() == 1; 
    } 

} 
Problemi correlati