SAP / cloud-sdk-java

Use the SAP Cloud SDK for Java to reduce development effort when building applications on SAP Business Technology Platform that communicate with SAP solutions and services such as SAP S/4HANA Cloud, SAP SuccessFactors, and many others.
Apache License 2.0
22 stars 13 forks source link

upgrade to 5.13.0 sap.cloud sdk throw exception #610

Closed Esmee-Zhang closed 1 week ago

Esmee-Zhang commented 1 week ago

Issue Description

Hi, when I upgrade sap.cloud.sdk to version 5.13.0 it throw exception

"exception_message": "jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor"

I use ApiClient apiClient = new ApiClient(destination) constructor to call the destination and inside the constructor when it calls httpRequestFactory.setHttpClient(ApacheHttpClient5Accessor.getHttpClient(destination)); to return the resttemplate it throws this exception.

the error log is

{"msg":"Unexpected servlet filter exception: jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor","tenant_id":"d26b9844-f444-41ef-b6a8-521c3f2ba671","component_id":"37a4f0e0-e913-48d3-a2d7-f0b9e5f14b2a","level":"WARN","written_ts":"1728980283234512431","logger":"com.sap.cloud.sdk.cloudplatform.servletjakarta.RequestAccessorFilter","component_name":"controllibrary-srv","w3c_traceparent":"00-a79c03768f8fbb0e5946496eef771441-02f3a5c98cd11838-01","thread":"http-nio-8080-exec-7","organization_name":"GRCPCRMControlLibrary","type":"log","exception_message":"jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor","space_name":"controlfes","organization_id":"26944595-788e-4138-9325-e59354edd2d8","exception_type":"com.sap.cloud.sdk.cloudplatform.thread.exception.ThreadContextExecutionException","correlation_id":"48159326-2d78-4522-4b25-fb18ee5d40bf","written_at":"2024-10-15T08:18:03.233Z","space_id":"24ca4541-7219-4b75-b99c-b3452a5b5c1a","request_id":"48159326-2d78-4522-4b25-fb18ee5d40bf","container_id":"10.36.193.8","tenant_subdomain":"dev-fes","stacktrace":["com.sap.cloud.sdk.cloudplatform.thread.exception.ThreadContextExecutionException: jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor","\tat com.sap.cloud.sdk.cloudplatform.thread.ThreadContextExecutor.execute(ThreadContextExecutor.java:272)","\tat com.sap.cloud.sdk.cloudplatform.servletjakarta.RequestAccessorFilter.doFilter(RequestAccessorFilter.java:60)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:86)","\tat com.sap.hcp.cf.logging.servlet.filter.GenerateRequestLogFilter.doFilter(GenerateRequestLogFilter.java:95)","\tat com.sap.hcp.cf.logging.servlet.filter.GenerateRequestLogFilter.doFilterRequest(GenerateRequestLogFilter.java:82)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilterRequest(AbstractLoggingFilter.java:47)","\tat com.sap.hcp.cf.logging.servlet.filter.AbstractLoggingFilter.doFilter(AbstractLoggingFilter.java:20)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter$InternalFilterChain.doFilter(CompositeFilter.java:84)","\tat com.sap.hcp.cf.logging.servlet.filter.CompositeFilter.doFilter(CompositeFilter.java:59)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat com.sap.grc.ctrl.config.TenantFilter.doFilter(TenantFilter.java:32)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)","\tat org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)","\tat org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:100)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)","\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)","\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.oauth2.server.resource.web.authentication.BearerTokenAuthenticationFilter.doFilterInternal(BearerTokenAuthenticationFilter.java:145)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)","\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)","\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)","\tat org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)","\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)","\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)","\tat org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)","\tat org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)","\tat org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)","\tat org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)","\tat org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)","\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:352)","\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:268)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat com.sap.grc.ctrl.config.CorrelationFilter.doFilter(CorrelationFilter.java:45)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)","\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)","\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)","\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)","\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)","\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)","\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)","\tat org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:731)","\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)","\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384)","\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)","\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)","\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)","\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)","\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)","\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)","\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)","\tat java.base/java.lang.Thread.run(Thread.java:840)","Caused by: jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: Could not initialize class com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1104)","\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)","\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)","\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)","\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)","\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)","\tat jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)","\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)","\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)","\tat com.sap.cloud.sdk.cloudplatform.servletjakarta.RequestAccessorFilter.lambda$doFilter$0(RequestAccessorFilter.java:60)","\tat com.sap.cloud.sdk.cloudplatform.thread.ThreadContextExecutor.lambda$execute$1(ThreadContextExecutor.java:264)","\tat com.sap.cloud.sdk.cloudplatform.thread.ThreadContextExecutor.call(ThreadContextExecutor.java:297)","\tat com.sap.cloud.sdk.cloudplatform.thread.ThreadContextExecutor.execute(ThreadContextExecutor.java:263)","\t... 105 more","Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor","\tat com.sap.cloud.sdk.services.openapi.apiclient.ApiClient.setRequestFactory(ApiClient.java:801)","\tat com.sap.cloud.sdk.services.openapi.apiclient.ApiClient.<init>(ApiClient.java:149)","\tat com.sap.grc.ctrl.acl.idp.service.IDPUserRetrieveServiceHelper.createApiClientFromDestination(IDPUserRetrieveServiceHelper.java:193)","\tat com.sap.grc.ctrl.acl.idp.service.IDPUserRetrieveServiceHelper.getGroups(IDPUserRetrieveServiceHelper.java:168)","\tat com.sap.grc.ctrl.acl.idp.service.IDPUserRetrieveServiceHelper.retrieveAndUpdateIDPGroupsAndAssignment(IDPUserRetrieveServiceHelper.java:115)","\tat com.sap.grc.ctrl.acl.idp.service.IDPUserRetrieveService.doScheduledRetrieveTask(IDPUserRetrieveService.java:59)","\tat com.sap.grc.ctrl.acl.controller.ScheduleJobController.runSyncUserProgram(ScheduleJobController.java:25)","\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)","\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)","\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\tat java.base/java.lang.reflect.Method.invoke(Method.java:569)","\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)","\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)","\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)","\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)","\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)","\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)","\t... 120 more","Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: org/apache/hc/client5/http/ssl/TlsSocketStrategy [in thread \"http-nio-8080-exec-1\"]","\tat com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5FactoryBuilder.<init>(ApacheHttpClient5FactoryBuilder.java:23)","\tat com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor.newDefaultFactory(ApacheHttpClient5Accessor.java:102)","\tat com.sap.cloud.sdk.cloudplatform.connectivity.ApacheHttpClient5Accessor.<clinit>(ApacheHttpClient5Accessor.java:50)","\t... 138 more"]}

Impact / Priority

Affected development phase: e.g. Development,

Impact: eBlocked

Timeline: e.g. Go-Live is in 12 weeks.

Error Message

MatKuhr commented 1 week ago

With the update from 5.12.0 => 5.13.0, the Cloud SDK connectivity-apache-httpclient5 increased its dependency on org.apache.httpcomponents.client5:httpclient5 to version 5.4. Please update the latest version of apache or use our BOM to manage dependency versions.

Since this seems to be a more frequent problem, I'll add a note to the release notes of 5.13.0.

gsartori commented 1 week ago

Updating the dependency of org.apache.httpcomponents.client5:httpclient5 to version 5.4 did not solve my issue (https://github.com/SAP/cloud-sdk-java/issues/611).

What worked at the moment was downgrading connectivity-apache-httpclient5 to 5.12.0.

Esmee-Zhang commented 1 week ago

With the update from 5.12.0 => 5.13.0, the Cloud SDK connectivity-apache-httpclient5 increased its dependency on org.apache.httpcomponents.client5:httpclient5 to version 5.4. Please update the latest version of apache or use our BOM to manage dependency versions.

Since this seems to be a more frequent problem, I'll add a note to the release notes of 5.13.0.

Hi, I try to use sdk-bom version 5.4 but it still has this exception.

MatKuhr commented 1 week ago

Please see my comment here

sdk-bom version 5.4

That doesn't make sense, you should either use httpclient5 version 5.4 or use the sdk-bom in version 5.13.0 (which would set that version for you).