程序包org.apache.http不存在,解决方式

本文介绍了解决在Java项目中因缺少Apache HttpClient库而导致的一系列编译错误的方法。通过在build.gradle文件中添加依赖,可以有效解决类找不到的问题。

类里提示爆红

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

报错:

Error:(19, 23) 错误: 程序包org.apache.http不存在
Error:(20, 23) 错误: 程序包org.apache.http不存在
Error:(21, 23) 错误: 程序包org.apache.http不存在
Error:(22, 30) 错误: 程序包org.apache.http.client不存在
Error:(23, 38) 错误: 程序包org.apache.http.client.methods不存在
Error:(24, 35) 错误: 程序包org.apache.http.impl.client不存在
Error:(175, 9) 错误: 找不到符号
符号:   类 HttpClient
位置: 类 SimpleWikiHelper
Error:(175, 33) 错误: 找不到符号
符号:   类 DefaultHttpClient
位置: 类 SimpleWikiHelper
Error:(176, 9) 错误: 找不到符号
符号:   类 HttpGet
位置: 类 SimpleWikiHelper
Error:(176, 31) 错误: 找不到符号
符号:   类 HttpGet
位置: 类 SimpleWikiHelper
Error:(180, 13) 错误: 找不到符号
符号:   类 HttpResponse
位置: 类 SimpleWikiHelper
Error:(183, 13) 错误: 找不到符号
符号:   类 StatusLine
位置: 类 SimpleWikiHelper
Error:(190, 13) 错误: 找不到符号
符号:   类 HttpEntity
位置: 类 SimpleWikiHelper
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

解决方法:

build.gradle中
在buildToolsVersion下边
defaultConfig上边

添加如下代码

    useLibrary 'org.apache.http.legacy'
  • 1

如图
这里写图片描述

            <link rel="stylesheet" href="http://static.blog.youkuaiyun.com/public/res-min/markdown_views.css?v=2.0">
                </div>
你遇到的错误: ``` 程序包org.apache.http.entity.mime存在 ``` 说明你的项目中尝试使用了 `org.apache.http.entity.mime` 下的类(如 `MultipartEntityBuilder`),但缺少对应的依赖库。 这个属于 **Apache HttpClient 的扩展模块:`httpmime`**,**并含在默认的 `httpclient` 中**,必须**单独引入**。 --- ### ✅ 正确解决方案 你需要添加 `httpmime` 依赖,它是专门用于支持 **MIME 多部分请求(如文件上传)** 的库。 --- #### ✅ 方法一:Gradle 项目(`build.gradle`) ```gradle dependencies { // 核心 HttpClient implementation 'org.apache.httpcomponents:httpclient:4.5.13' // 必须添加 httpmime 才能使用 MultipartEntityBuilder 等 implementation 'org.apache.httpcomponents:httpmime:4.5.13' } ``` 然后执行: ```bash ./gradlew build # 或刷新 IDE 中的 Gradle 插件 ``` --- #### ✅ 方法二:Maven 项目(`pom.xml`) ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.13</version> </dependency> ``` > 🔗 官方参考:https://hc.apache.org/httpcomponents-client-4.5.x/tutorial/html/fundamentals.html#d5e288 (MIME 部分) --- ### 🧩 示例代码:使用 `MultipartEntityBuilder` 上传文件或表单 ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.File; import java.io.IOException; public class MultipartUploadExample { public static void main(String[] args) { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost uploadFile = new HttpPost("https://httpbin.org/post"); // 构建 multipart 请求体 HttpEntity entity = MultipartEntityBuilder.create() .addTextBody("username", "john_doe", null) .addBinaryBody("file", new File("test.txt")) // 替换为实际文件路径 .build(); uploadFile.setEntity(entity); // 发送请求 try (CloseableHttpResponse response = httpClient.execute(uploadFile)) { System.out.println("Status Code: " + response.getCode()); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response Body: " + responseBody); } } catch (IOException e) { e.printStackTrace(); } } } ``` ⚠️ 如果你加 `httpmime` 依赖,上面代码会编译失败,报错就是: ``` 程序包org.apache.http.entity.mime存在 ``` --- ### ❓为什么需要单独引入 httpmime? 因为 Apache HttpClient 设计为模块化: | 模块 | 用途 | 是否必需 | |------|------|--------| | `httpclient` | 基本 GET/POST 请求 | ✅ 必需 | | `httpmime` | 支持文件上传、multipart 表单 | ❌ 只有上传时才需要 | | `httpcore` | 底层核心(通常自动传递依赖) | 自动含 | 所以如果你要做文件上传或提交带附件的表单,就必须显式添加 `httpmime`。 --- ### 🛠 排查建议 1. **确认是否真的添加了 `httpmime` 依赖** 2. **检查版本是否与 `httpclient` 一致**(推荐都用 `4.5.13`) 3. **清理构建缓存**: ```bash ./gradlew clean build ``` 4. **IDE 刷新依赖**:IntelliJ → Refresh Gradle/Maven Project ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值