gpt4 book ai didi

java - 在windows 8命令行上编译Junit报错

转载 作者:行者123 更新时间:2023-12-01 04:39:20 24 4
gpt4 key购买 nike

我使用 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_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 中运行良好,因为运行单元测试时 hamcrest 是默认类路径的一部分。

关于java - 在windows 8命令行上编译Junit报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com