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

使用Kotlin的khttp调用HTTPS接口时遇InaccessibleObjectException求解决

解决khttp调用HTTPS时的InaccessibleObjectException异常

问题原因

khttp 1.4.2版本依赖的OkHttp版本较旧,且内部通过反射访问JDK或OkHttp的内部API,而JDK 9及以上版本引入的模块系统默认限制了这类反射操作,最终导致调用HTTPS接口时抛出权限异常。

可行解决办法

  • 降级JDK版本至JDK 8
    JDK 8没有模块权限限制,直接切换到JDK 8运行项目即可解决问题。在IDEA中可通过File → Project Structure → Project Settings → Project路径修改SDK版本为JDK 8。

  • 添加JVM启动参数开放反射权限
    针对JDK 9+版本,在IDEA的运行配置中添加以下JVM参数,解除反射访问限制:

    --add-opens java.base/java.net=ALL-UNNAMED
    --add-opens java.base/java.lang=ALL-UNNAMED
    --add-opens okhttp3/internal/-=ALL-UNNAMED
    

    添加位置:Run → Edit Configurations → 选中目标运行配置 → VM options中粘贴上述参数。

  • 替换为维护活跃的HTTP客户端库
    khttp项目已长时间未更新(最后版本更新于2020年),长期使用建议替换为更稳定的库,示例如下:

    • OkHttp:直接使用官方库,示例代码:
      import okhttp3.OkHttpClient
      import okhttp3.Request
      
      fun main() {
          val client = OkHttpClient()
          val request = Request.Builder().url("https://ifconfig.me/all").build()
          client.newCall(request).execute().use { response ->
              println(response.body?.string())
          }
      }
      
      依赖配置:
      dependencies {
          implementation("com.squareup.okhttp3:okhttp:4.12.0")
          testImplementation(kotlin("test"))
      }
      
    • Ktor Client:Kotlin官方推荐的HTTP客户端,支持异步特性,示例代码:
      import io.ktor.client.*
      import io.ktor.client.call.*
      import io.ktor.client.engine.okhttp.*
      import io.ktor.client.request.*
      
      suspend fun main() {
          val client = HttpClient(OkHttp)
          val response = client.get("https://ifconfig.me/all").body<String>()
          println(response)
      }
      
      依赖配置:
      dependencies {
          implementation("io.ktor:ktor-client-core:2.3.10")
          implementation("io.ktor:ktor-client-okhttp:2.3.10")
          testImplementation(kotlin("test"))
      }
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:26:10