2013-07-11 9 views
27

Ho utilizzato Intellij Idea 12 Community edition. Sto cercando di creare un caso di test per la mia classe creando un caso di test. Quando eseguo il mio test case dicejava.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing in Intellij

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:44) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing 
    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:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 25 more 

Come eseguire il test case in Intellij. Ho incluso il file jar junit4.11 sul mio modulo

+1

Il cambio da 4.12 a 4.8 di JUNIT ha funzionato bene. Aggiungi anche il jar al percorso della classe nella struttura del progetto del tuo IDE. Dopo aver aggiunto, compila la classe su cui stai eseguendo il test, quindi prova a eseguire il file di test. Spero che funzioni bene allora. –

risposta

46

Hai incluso il file hamcrest-core-1.3.jar nel classpath? Se non incluso significa includerlo e riprovare.

10

aggiungi junit.jar alla dipendenza del progetto. potrebbe anche essere necessario aggiungere hamcrest.jar in aggiunta.

Apri file-> Struttura progetto, Moduli clic-> Dipendenze, aggiungi junit.jar.

+0

Ho svitato perché avevo bisogno di aggiungere hamcrest in questo modo, ma tu ci vai lì :) – th3morg

1

Se si incontra questo (e alcuni altri thread) su questo errore e l'aggiunta del vaso alle dipendenze non funziona, sarà necessario aggiungere al classpath java generale.

Ho riscontrato questo errore in OSX in cui Maven avrebbe scaricato la dipendenza, ma non lo ha trovato in modalità fork.

L'aggiunta di tutti i jar di hamcrest a Library/Java/Extensions ha infine risolto il problema in caso contrario.

+0

Questo ha funzionato anche per me, non so perché aggiungere le dipendenze Maven non lo farebbe. –