2013-07-11 18 views
27

我使用了Intellij Idea 12社區版。我正在嘗試通過創建測試用例來爲我的類創建測試用例。當我運行我的測試用例時,它說java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing在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 

如何在Intellij中運行測試用例。我將junit4.11 jar文件包含到我的模塊中

+1

將我的JUNIT 4.12更改爲4.8,效果很好。還要將該jar添加到IDE的項目結構中的類路徑中。添加後,編譯您正在測試的類,然後嘗試運行測試文件。我希望它運作良好。 –

回答

46

您是否在您的類路徑中包含hamcrest-core-1.3.jar文件?如果不包括,意味着包括該罐子,並再次嘗試。

10

將junit.jar添加到您的項目依賴項中。 您可能還需要添加hamcrest.jar。

打開File-> Project Structure,點擊Modules-> Dependences,添加junit.jar。

+0

Upvoted,因爲我需要以這種方式添加hamcrest,但你去我那裏:) – th3morg

1

如果遇到此錯誤(和其他幾個線程),並將該jar添加到依賴項不起作用,則需要添加到常規java類路徑中。

我在OSX中遇到這個錯誤,maven會下載依賴關係,但在fork模式下找不到它。

將所有hamcrest jar添加到Library/Java/Extensions,最終解決了這個問題。

+0

這對我來說也是如此,我不知道爲什麼添加Maven依賴不會。 –