问题
When i try to create a new OkHttpClient object an Exception get thrown
I'm using OkHttp 3.11.0 and OkIO 2.0.0-RC1.
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/TypeCastException at okhttp3.ResponseBody.create(ResponseBody.java:210) at okhttp3.internal.Util.(Util.java:60) at okhttp3.OkHttpClient.(OkHttpClient.java:123) at p12.Main.main(Main.java:8) Caused by: java.lang.ClassNotFoundException: kotlin.TypeCastException at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 4 more
回答1:
Did you add the kotlin stdlib and stdlib-common dependencies to your build? Looks like they're absent.
回答2:
I had the same problem. Add kotlin-stdlib JAR to the build Path
回答3:
The solution that worked for me (which is mentioned in this github comment) is to add okhttp
library itself:
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'
回答4:
It is likely that your project includes the version of okhttp
as version 3.x.x
,
causing the mockwebserver
to depend on the wrong version of okhttp
which also does not yet contains the transitive dependency on kotlin-stdlib-common
.
If you are using Spring Boot along with mockwebserver just add the following property to your pom
<okhttp3.version>4.x.x</okhttp3.version>
来源:https://stackoverflow.com/questions/51563273/kotlin-typecastexception-when-trying-to-create-okhttpclient-object