Java 在windows 8上编译Junit命令行错误

Java 在windows 8上编译Junit命令行错误,java,command-line,junit,javac,Java,Command Line,Junit,Javac,我使用Eclipse创建了一个Junit测试用例,它运行良好。我试图用命令行编译它,但似乎做不到 我能够很好地“编译”它。但是现在当我尝试运行它时,我得到了以下错误: JUnit version 4.8.2 Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDesc ribing at java.lang.ClassLoader.defineClass1(Native Meth

我使用Eclipse创建了一个Junit测试用例,它运行良好。我试图用命令行编译它,但似乎做不到

我能够很好地“编译”它。但是现在当我尝试运行它时,我得到了以下错误:

 JUnit version 4.8.2
Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDesc
ribing
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.junit.runner.Computer.getSuite(Computer.java:26)
        at org.junit.runner.Request.classes(Request.java:69)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
        at org.junit.runner.JUnitCore.runMain(JUnitCore.java:98)
        at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:53)
        at org.junit.runner.JUnitCore.main(JUnitCore.java:45)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 18 more
要运行它,我正在使用:

java -cp "E:/Android ADT/adt-bundle-windows-x86_64-20130219/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar;." org.junit.runner.JUnitCore SchedulerTest
编译效果很好,为了编译,我使用了:

javac -cp "E:/Android ADT/adt-bundle-windows
-x86_64-20130219/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar
;." SchedulerTest.java

当编译工作正常,但在运行代码时得到
java.lang.NoClassDefFoundError
时,这通常表示缺少运行时依赖项。与本例一样,
org.hamcrest.selfdescription
在编译时不使用,但在运行时是必需的

hamcrest
通常捆绑在官方的
junit.jar
中,您可以从junit.org下载,但是您的
E:/Android ADT/ADT-bundle-windows-x86_64-20130219/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar
没有。在Android ADT插件目录
E:/Android ADT/ADT-bundle-windows-x86\u 64-20130219/eclipse/plugins/
中查找hamcrest jar,并在运行应用程序时将其包含在类路径中

也就是说,像这样运行:

java -cp "E:/Android ADT/adt-bundle-windows-x86_64-20130219/eclipse/plugins/PATH_TO_HAMCREST.jar;E:/Android ADT/adt-bundle-windows-x86_64-20130219/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar;." org.junit.runner.JUnitCore SchedulerTest

最后,单元测试在Eclipse中运行良好,因为运行单元测试时默认类路径中有一部分

您是使用捆绑在
junit.jar
中的hamcrest,还是有一个单独的依赖项?不要这么认为。我要导入的唯一内容是:
import static org.junit.Assert.*;导入org.junit.Test