运行RestAssured测试代码时遭遇NoClassDefFoundError错误求助
这个问题我之前在搭建RestAssured测试框架时也碰到过,本质就是项目缺少了Apache HttpClient的multipart处理依赖,导致RestAssured在初始化配置类的时候找不到org.apache.http.entity.mime.HttpMultipartMode这个核心类。
先看你抛出的错误栈:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/entity/mime/HttpMultipartMode
at io.restassured.config.HttpClientConfig.(HttpClientConfig.java:85)
at io.restassured.config.RestAssuredConfig.(RestAssuredConfig.java:41)
at io.restassured.RestAssured.(RestAssured.java:421)
at restApiTutorial.basics.main(basics.java:13)
Caused by: java.lang.ClassNotFoundException: org.apache.http.entity.mime.HttpMultipartMode
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
具体解决方案
根据你的构建工具,添加对应的依赖即可:
1. Maven项目
在pom.xml的<dependencies>节点中加入httpmime依赖:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.14</version> <!-- 建议和你RestAssured依赖的httpclient版本保持一致,避免版本冲突 --> </dependency>
2. Gradle项目
在build.gradle的依赖块中添加:
implementation 'org.apache.httpcomponents:httpmime:4.5.14'
3. 手动导入Jar包
如果是没有用构建工具的项目,需要下载Apache官方提供的httpmime.jar包以及它的依赖httpclient.jar,放到项目的lib目录并添加到类路径中。
注意事项
- 确保httpmime的版本和RestAssured依赖的httpclient版本匹配:如果RestAssured用的是HttpClient 4.x系列,就用4.x的httpmime;如果是5.x系列,就对应5.x的httpmime(比如
org.apache.httpcomponents.client5:httpclient5-mime)。 - 添加依赖后,记得刷新项目的依赖缓存,确保Jar包被正确下载并加载到类路径中。
内容的提问来源于stack exchange,提问作者Kartikey Bajpai

