NoClassDefFoundError引起:java.lang.ClassNotFoundException:junit.textui.ResultPrinter

时间:2015-04-18 20:30:16

标签: java android junit android-studio android-testing

当我在创建应用时尝试在Android工作室中运行测试时,我收到此错误:

/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java -ea -Didea.launcher.port=7533 "-Didea.launcher.bin.path=/Volumes/Android Studio 1.1.0/Android Studio.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Volumes/Android Studio 1.1.0/Android Studio.app/Contents/lib/idea_rt.jar:/Volumes/Android Studio 1.1.0/Android Studio.app/Contents/plugins/junit/lib/junit-rt.jar:/Users/Carl/Library/Android/sdk/platforms/android-21/android.jar:/Users/Carl/Library/Android/sdk/platforms/android-21/data/res:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/classes/test/debug:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/classes/debug:/Users/Carl/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/21.0.2/support-annotations-21.0.2.jar:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.2/classes.jar:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.2/libs/internal_impl-21.0.2.jar:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/exploded-aar/com.android.support/support-v4/21.0.2/res:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.2/classes.jar:/Users/Carl/AndroidStudioProjects/Sunshine-Version-3/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.2/res" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 @/private/var/folders/hv/2rmrsk154qn6gb1ph1h7v0pc0000gp/T/idea_junit8537342709436198605.tmp @w@/private/var/folders/hv/2rmrsk154qn6gb1ph1h7v0pc0000gp/T/idea_working_dirs_junit3455533605177330243.tmp -socket50922
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:259)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116)
Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter
    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)
    ... 3 more

Process finished with exit code 1

我跟踪的视频具有相同的代码并变为绿色(测试已通过),因此它应该可以正常工作。我点击这里" com.example.android.sunshine.app"文件夹:

enter image description here

然后选择运行测试他们在视频中做了什么,但我仍然得到错误。与我的Android工作室相比,它在视频中看起来的唯一区别在于:

enter image description here

在com.example中说""。对我来说,它并没有说"在"那里,只有"运行测试"。

有谁知道我为什么会收到这个错误?我在Mac上使用Android studio:1.1.0。

提前致谢!

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试运行JUnit测试,而你还没有发布你的测试类,我猜他们实际上并不适合JUnit。如果您运行/调试配置尝试添加“Android测试”目标而不是JUnit目标。希望这可以解决你的问题。

另一方面,看起来你正在使用1.8 JDK,这在Google I / O 2015上还没有得到官方支持(有人在其中一个会话中询问了这个问题,Google的人说它是尚不支持)。这不太可能是导致你的问题的原因,但如果你以后尝试做其他的事情,可能会改善我们现在的1.7。