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

OkHttp3创建RequestBody报错:Could not initialize class okhttp3.internal.Util

解决OkHttp3在Glassfish 5.1中初始化Util类失败的问题

针对你在Glassfish 5.1(JDK 8)环境下使用OkHttp3创建FormBody时出现的java.lang.NoClassDefFoundError: Could not initialize class okhttp3.internal.Util异常,以下是可行的解决方向:

  • 确保依赖完整且版本兼容
    OkHttp依赖Okio库,必须保证两者版本匹配:OkHttp 3.x对应Okio 1.x,OkHttp 4.x对应Okio 2.x。同时确认使用的OkHttp版本支持JDK 8(推荐OkHttp 4.10.x及以下版本,5.x系列需JDK 11+)。通过依赖分析工具(如Maven的mvn dependency:tree或Gradle的gradle dependencies)检查是否存在依赖冲突,排除容器自带的冲突类库。

  • 调整Glassfish类加载优先级
    Glassfish默认会优先加载容器自带的类,可能导致应用的OkHttp库无法正常加载。在项目的WEB-INF/glassfish-web.xml中添加如下配置,让应用优先加载自身的库:

    <glassfish-web-app>
        <class-loader delegate="false"/>
    </glassfish-web-app>
    

    注意:此配置可能影响依赖容器类的功能,需完成测试验证。

  • 检查WAR包部署完整性
    确认WAR包的WEB-INF/lib目录下包含所有OkHttp相关依赖包(okhttp.jar、okio.jar等),不要将这些依赖放在Glassfish的全局库目录(如domain/lib),避免容器加载不兼容的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:05:19