尝试创建 OkHttpClient 对象时出现 kotlin/TypeCastException

Posted

技术标签:

【中文标题】尝试创建 OkHttpClient 对象时出现 kotlin/TypeCastException【英文标题】:kotlin/TypeCastException when trying to create OkHttpClient object 【发布时间】:2019-01-04 21:25:00 【问题描述】:

当我尝试创建一个新的 OkHttpClient 对象时,抛出一个异常

我正在使用 OkHttp 3.11.0 和 OkIO 2.0.0-RC1。

线程“main”中的异常 java.lang.NoClassDefFoundError: kotlin/TypeCastException 在 okhttp3.ResponseBody.create(ResponseBody.java:210) 在 okhttp3.internal.Util.(Util.java:60) 在 okhttp3.OkHttpClient.(OkHttpClient.java:123) 在 p12.Main.main(Main.java:8) 引起:java.lang.ClassNotFoundException: kotlin.TypeCastException 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 4 更多

【问题讨论】:

你能提供出错的代码吗? 【参考方案1】:

您是否将 kotlin stdlib 和 stdlib-common 依赖项添加到您的构建中?看起来他们不见了。

【讨论】:

【参考方案2】:

对我有用的解决方案(在这个github comment 中提到)是添加okhttp 库本身:

Gradle kotlin DSL:

testImplementation("com.squareup.okhttp3:okhttp:4.2.2")
testImplementation("com.squareup.okhttp3:mockwebserver:4.2.2")

Gradle Groovy DSL:

testImplementation 'com.squareup.okhttp3:okhttp:4.2.2'
testImplementation 'com.squareup.okhttp3:mockwebserver:4.2.2'

【讨论】:

【参考方案3】:

我遇到了同样的问题。 在构建路径中添加kotlin-stdlib JAR

【讨论】:

【参考方案4】:

很可能你的项目包含okhttp的版本为3.x.x, 导致mockwebserver 依赖于错误版本的okhttp,它还不包含对kotlin-stdlib-common 的传递依赖。

如果您使用 Spring Bootmockwebserver,只需将以下属性添加到您的 pom 中

<okhttp3.version>4.x.x</okhttp3.version>

【讨论】:

【参考方案5】:

好吧,我遇到了同样的问题,我像这样添加了 Kotlin 依赖项:

<dependency>
   <groupId>org.jetbrains.kotlin</groupId>
   <artifactId>kotlin-stdlib</artifactId>
   <version>1.4.32</version>
</dependency>

【讨论】:

【参考方案6】:

在 OSGi 中不要使用 kotlin 库,而是使用 kotlin 包: https://kotlinlang.org/docs/reference/kotlin-osgi.html

【讨论】:

以上是关于尝试创建 OkHttpClient 对象时出现 kotlin/TypeCastException的主要内容,如果未能解决你的问题,请参考以下文章

创建对象数组时出现NullPointerException [重复]

尝试为对象设置值时出现 NullReferenceException

尝试访问以编程方式创建的 <iframe> 的文档对象时出现“访问被拒绝”JavaScript 错误(仅限 IE)

尝试复制 pyside 对象时出现问题

尝试创建 ActiveX 组件时出现运行时错误 429

在 SQLAlchemy Flask 中创建对象时出现 NoForeignKeysError