ClientConnectionManager 的 NoClassDefFoundError

问题描述 投票:0回答:1

我正在尝试使用肥皂网络服务并将相对依赖项包含在 gradle 文件中

implementation('org.springframework.boot:spring-boot-starter-web-services') {
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    }

以及 Jaxb 依赖项。这段代码在我的本地工作得非常好,我能够从服务中检索结果,但是当我将此代码部署到 Openshift 时,我收到以下错误:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com..abc.xyz.AccountServiceClient]: Factory method 'accountServiceClient' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/http/conn/ClientConnectionManager
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.22.jar!/:5.3.22]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.22.jar!/:5.3.22]
    ... 69 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/apache/http/conn/ClientConnectionManager
    at com.discover.card.collections.aprapi.config.WebServiceConfig.httpComponentsMessageSender(WebServiceConfig.java:43) ~[classes!/:na]
    at com.discover.card.collections.aprapi.config.WebServiceConfig.accountServiceClient(WebServiceConfig.java:31) ~[classes!/:na]
    at com.discover.card.collections.aprapi.config.WebServiceConfig$$EnhancerBySpringCGLIB$$79bdd48b.CGLIB$accountServiceClient$1(<generated>) ~[classes!/:na]

我尝试添加 HttpClient 的依赖项并且

implementation("org.apache.httpcomponents:httpclient:4.5.3")
implementation "org.apache.cxf:cxf-rt-transports-http-hc:3.4.2"

但还是不行。

也尝试过搜索,但没有看到其他人面临类似的情况,在本地工作正常,但在 openshift 中部署时抛出错误。

我对本地和开发人员使用相同的 yaml 配置文件,所以这也不应该是问题。

请告知我还可以注意什么?

java spring-boot dependencies noclassdeffounderror
1个回答
0
投票

在迁移到 spring 6 / springboot 3 时,我遇到了同样的异常。 不确定这到底是这里遇到的问题,但这里是如何解决的。 我们的例外:

Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ClientConnectionManager at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)  at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at ava.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
                            ... 85 more

原来是因为我们使用的是 HttpComponentsMessageSender,升级到 HttpComponents5MessageSender 解决了问题

原代码:

  HttpComponentsMessageSender sender() {
    return new HttpComponentsMessageSender();
  }

成为:

  HttpComponents5MessageSender sender() {
    return new HttpComponents5MessageSender();
  }

异常不再发生。

© www.soinside.com 2019 - 2024. All rights reserved.