首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在windows 8命令行上编译Junit时出错

在windows 8命令行上编译Junit时出错
EN

Stack Overflow用户
提问于 2013-05-31 05:11:35
回答 1查看 596关注 0票数 1

我使用Eclipse创建了一个Junit测试用例,它工作得很好。我正在尝试使用命令行编译它,但似乎做不到。

我现在能够“编译”它fine..but当我尝试运行它时,我得到了以下错误:

代码语言:javascript
运行
复制
 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

要运行它,我正在使用:

代码语言:javascript
运行
复制
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

编译运行良好,对于编译,我使用了:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-05-31 06:43:43

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

hamcrest通常捆绑在您可以从junit.org下载的官方junit.jar中,但是您的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_64-20130219/eclipse/plugins/中查找hamcrest jar,并在运行应用程序时将其包含在类路径中。

也就是说,像这样运行:

代码语言:javascript
运行
复制
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中运行得很好,因为在运行单元测试时,hamcrest是默认类路径的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16845937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档