java-sdk-core
java-sdk-core copied to clipboard
ClassNotFoundException after upgrading okhttp to 5.3.2
We are seeing a ClassNotFoundException after upgrading okhttp from 4.12.0 to 5.3.2. As v4 hasn't had a release since 2023/10, we'd like to upgrade to v5. The CNFE looks to happen because the IBM Cloud Java SDK is using an internal okhttp class that was removed in v5.
java.lang.NoClassDefFoundError: okhttp3.internal.Util
at com.ibm.cloud.sdk.core.http.InputStreamRequestBody.writeTo(InputStreamRequestBody.java:101)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:66)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:101)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:85)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:74)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
at com.ibm.cloud.sdk.core.http.RetryInterceptor.intercept(RetryInterceptor.java:103)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:126)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:226)
at okhttp3.internal.connection.RealCall.execute(RealCall.kt:178)
at com.ibm.cloud.sdk.core.service.BaseService$IBMCloudSDKServiceCall.execute(BaseService.java:601)
...internal classes omitted...
at java.base\/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base\/java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:85)
at org.jboss.weld.injection.MethodInvocationStrategy$DefaultMethodInvocationStrategy.invoke(MethodInvocationStrategy.java:144)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
at jakarta.enterprise.inject.spi.ObserverMethod.notify(ObserverMethod.java:142)
at org.jboss.weld.util.Observers.notify(Observers.java:166)
at org.jboss.weld.event.ObserverNotifier.notifyAsyncObserver(ObserverNotifier.java:415)
at org.jboss.weld.event.ObserverNotifier.lambda$notifyAsyncObservers$5(ObserverNotifier.java:358)
at org.jboss.weld.event.ObserverNotifier.lambda$createSupplier$8(ObserverNotifier.java:442)
at org.jboss.weld.security.spi.SecurityServices.lambda$getSecurityContextAssociator$0(SecurityServices.java:80)
at org.jboss.weld.event.ObserverNotifier.lambda$createSupplier$9(ObserverNotifier.java:438)
at java.base\/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
at com.ibm.ws.threading.internal.PolicyTaskFutureImpl.run(PolicyTaskFutureImpl.java:762)
at com.ibm.ws.threading.internal.PolicyExecutorImpl.runTask(PolicyExecutorImpl.java:1341)
at com.ibm.ws.threading.internal.PolicyExecutorImpl$AsyncTask.run(PolicyExecutorImpl.java:220)
at java.base\/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base\/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base\/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: okhttp3.internal.Util
at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:786)
at com.ibm.ws.classloading.internal.AppClassLoader.findClass(AppClassLoader.java:384)
at com.ibm.ws.classloading.internal.AppClassLoader.findOrDelegateLoadClass(AppClassLoader.java:726)
at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:618)
at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:587)
at java.base\/java.lang.ClassLoader.loadClass(Unknown Source)
... 42 more