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

如何在macOS命令行运行基于OkHttp的Kotlin代码?求助解决报错

解决macOS 13命令行运行Kotlin+OkHttp时的NoClassDefFoundError问题

解决方案核心

替换与OkHttp 4.11.0兼容的Okio版本,并调整编译/运行命令中的类路径配置。

详细操作步骤

  1. 重新下载兼容版本的Okio Jar包
    在/tmp/kotlin目录下,替换原Okio下载命令为:
curl https://repo1.maven.org/maven2/com/squareup/okio/okio/3.4.0/okio-3.4.0.jar > okio-3.4.0.jar
  1. 调整编译命令
    更新类路径中的Okio文件名,执行编译:
kotlinc -classpath okhttp-4.11.0.jar:kotlin-stdlib-1.8.21.jar:okio-3.4.0.jar OkHttpExample.kt -include-runtime -d OkHttpExample.jar
  1. 调整运行命令
    同样更新类路径中的Okio文件名,执行运行:
java -classpath okhttp-4.11.0.jar:kotlin-stdlib-1.8.21.jar:okio-3.4.0.jar:OkHttpExample.jar OkHttpExampleKt

若编译时使用了-include-runtime参数,生成的Jar包已包含Kotlin运行时,可简化运行命令:

java -classpath okhttp-4.11.0.jar:okio-3.4.0.jar:OkHttpExample.jar OkHttpExampleKt

问题原因说明

  • 报错java.lang.NoClassDefFoundError: okio/Buffer的直接原因是版本不兼容:OkHttp 4.11.0依赖的Okio版本为3.4.0,你之前使用的3.3.0版本缺少部分OkHttp所需的类。
  • 关于kotlin-stdlib的疑问:该依赖是必须的,ChatGPT的建议合理。编译Kotlin代码时需要依赖kotlin-stdlib提供核心API,显式指定版本可避免与brew自带的Kotlin版本出现兼容性冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:32:48