问题
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