You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fabric Minecraft Mod发送HTTP请求打包后报NoClassDefFoundError如何解决

问题原因

你遇到的java.lang.NoClassDefFoundError: org/apache/http/HttpEntity错误根源是Apache HttpClient依赖未被打包到最终发布的Mod Jar中:开发环境下构建工具会自动拉取依赖提供编译运行支持,但Minecraft服务端/客户端的原生运行环境并不包含该第三方库,运行时就会找不到对应类。

解决方案

方案1:优先使用JDK自带的HTTP客户端(推荐)

JDK 11及以上版本内置了java.net.http包下的HTTP客户端,无需额外引入第三方依赖,完全可以替代Apache HttpClient实现POST请求,避免依赖缺失问题。
替换后代码示例:

import com.google.gson.JsonObject;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class NetworkUtils {
    private static final HttpClient HTTP_CLIENT = HttpClient.newHttpClient();

    public static void post(String url, JsonObject json) throws IOException, InterruptedException {
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .header("Content-Type", "application/json")
                .POST(HttpRequest.BodyPublishers.ofString(json.toString()))
                .build();
        HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.discarding());
    }
}

该方案无额外依赖、不会和其他Mod产生依赖冲突、代码更简洁,是Fabric Mod开发的首选方案。

方案2:将Apache HttpClient打包进Mod Jar

如果你一定要继续使用Apache HttpClient,需要修改Gradle配置,通过Fabric Loom的Jar-in-Jar功能把依赖打包进你的Mod中:

  1. 调整build.gradle的依赖配置,用include标记需要打包进Jar的依赖:
dependencies {
    // 保留原有其他依赖
    modImplementation "org.apache.httpcomponents:httpclient:4.5.14"
    include "org.apache.httpcomponents:httpclient:4.5.14"
    // 配套的传递依赖也需要一起引入并标记
    modImplementation "org.apache.httpcomponents:httpcore:4.4.16"
    include "org.apache.httpcomponents:httpcore:4.4.16"
}
  1. 重新执行build命令打包Mod,生成的Jar就会包含Apache HttpClient的相关类,运行时不会再报类找不到的错误。
注意事项
  • 尽量优先使用JDK内置API,避免引入不必要的第三方依赖,可以大幅降低Mod兼容问题
  • 不推荐使用Shadow插件重命名依赖包,容易引发其他难以排查的类冲突问题

内容的提问来源于stack exchange,提问作者Ivan1F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:15:01