“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:org/hamcrest/Matchers
运行此代码重新启动时出现此错误:“线程中的异常”;“主要”;java.lang.NoClassDefFoundError:org/hamcrest/Matchers,java,Java,运行此代码重新启动时出现此错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/Matchers at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:133) at io.restassured.internal.ValidatableResp
Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/Matchers
at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:133)
at io.restassured.internal.ValidatableResponseOptionsImpl.statusCode(ValidatableResponseOptionsImpl.java:119)
at newclas.main(newclas.java:18)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.Matchers
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)
... 3 more
这是我在系统上运行的一段代码:不确定如何解决导入问题。我试过几种进口产品,但都不起作用
//import io.restassured.matcher.RestAssuredMatchers.*;
//import io.restassured.matcher.RestAssuredMatchers;
import static io.restassured.RestAssured.given;
import io.restassured.RestAssured;
import static org.hamcrest.Matchers.equalTo;
public class newclas {
public static void main(String[] args) {
// TODO Auto-generated method stub
RestAssured.baseURI="https://jsonplaceholder.typicode.com";
System.out.println("befoire given");
given().
header("Content-Type", "application/json").
when().
get("/users").
then().
assertThat().statusCode(200);
System.out.println("thank you ++ %d");
}
}
在类路径中不可用
将以下依赖项添加到项目中
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-junit -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-junit</artifactId>
<version>2.0.0.0</version>
<scope>test</scope>
</dependency>
org.hamcrest
汉克雷斯特朱松
2.0.0.0
测验
此异常告诉您运行时类路径不包含hamcrest库
换句话说:您成功地将该库显示在“编译”步骤的类路径中,但不知何故,您忘记了何时运行代码
因此,答案是后退一步,确保编译期间应用的类路径设置与用于运行编译类的设置相匹配。因此,要么手动执行,要么在IDE或构建工具中查看项目的定义。我们无法解决我们看不到的问题,请将您的代码包含到问题中。问题不是堆栈跟踪或您拥有并编译的代码:而是您触发编译的方式,而不是触发测试的实际“运行”方式。顺便说一句:您想了解java命名约定。类名应该总是大写。名称应该总是告诉读者一些事情,即使是“NewClass”也不会告诉读者任何事情。这假设用户正在使用Maven。如果他没有,或者IDE对他隐瞒了呢@幽灵猫是的,我同意你的看法。由于没有太多的细节我可以从一个问题,我建议检查依赖性。是的,谢谢你的更新。事实上,这个问题是由于hamcrest jar设置造成的,我已经添加了它,它得到了解决。我在Android Studio上,如何手动检查编译时类路径设置与运行时设置是否匹配?