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

OkHttp出现java.lang.NoSuchFieldError: Companion异常求助

OkHttp 出现 java.lang.NoSuchFieldError: Companion 异常的解决方案

问题背景

使用OkHttp 3.x和4.x版本时均触发以下异常:

Exception in thread "main" java.lang.NoSuchFieldError: Companion
    at okhttp3.internal.Util.<clinit>(Util.kt:72)
    at okhttp3.internal.concurrent.TaskRunner.<clinit>(TaskRunner.kt:309)
    at okhttp3.ConnectionPool.<init>(ConnectionPool.kt:41)
    at okhttp3.ConnectionPool.<init>(ConnectionPool.kt:47)
    at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.kt:471)

已尝试显式添加Okio依赖但无效,内部依赖依赖OkHttp 4.9.0,无论是否在pom.xml中显式声明OkHttp版本(包括显式声明4.12搭配Okio 3.6.0),都会触发该异常。

排查与解决步骤

  • 强制统一依赖版本:该异常核心原因是OkHttp与Okio版本不兼容,或存在多版本依赖冲突。通过<dependencyManagement>锁定OkHttp和Okio的兼容版本:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>4.12.0</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio</artifactId>
                <version>3.6.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  • 排查依赖树:执行mvn dependency:tree命令,查看是否有其他依赖间接引入了低版本或不兼容的OkHttp/Okio,找到后针对性排除。
  • 清理本地仓库:删除本地Maven仓库中OkHttp和Okio的缓存目录(路径一般为~/.m2/repository/com/squareup/okhttp3和~/.m2/repository/com/squareup/okio),再执行mvn clean install重新拉取依赖。
  • 统一Kotlin版本:OkHttp 4.x基于Kotlin开发,若项目Kotlin版本与OkHttp依赖的版本差异过大,也会引发此类字段找不到的问题。可通过Kotlin BOM统一版本:
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-bom</artifactId>
                <version>1.8.22</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  • 排除内部依赖的冲突包:如果内部依赖引入的OkHttp 4.9.0与你声明的版本冲突,在内部依赖的配置中添加排除规则:
    <dependency>
        <groupId>你的内部依赖groupId</groupId>
        <artifactId>你的内部依赖artifactId</artifactId>
        <version>xxx</version>
        <exclusions>
            <exclusion>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.squareup.okio</groupId>
                <artifactId>okio</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:22:13