java.lang.NoSuchFieldError: INSTANCE only when running on Tomcat

java.lang.NoSuchFieldError: INSTANCE only when running on Tomcat

我正在使用 Apache 的 httpcomponents 连接到网络服务。当我 运行 我的测试时,初始化客户端没有问题。但是,当我想进行实际的集成测试时,我得到了上述异常以及以下堆栈跟踪:

java.lang.NoSuchFieldError: INSTANCE
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:969)
    at eu.sonetas.fuga.rs.foo.FooRs.<init>(IbanityRs.java:64)
    at eu.sonetas.fuga.rs.foo.FooRs_EInvoicing.<init>(fooRs_EInvoicing.java:45)

我正在使用 httpclient 4.5.13、httpcore 4.4.14 和 httpmime 4.5.13(所有最新版本)和 tomcat 9.0.6。

我不使用任何构建工具,而且我很确定在我的 class 路径中没有上述 jar 的其他版本。

这是出错的调用代码:

public FooRs() throws FooException {
        try {
            SSLContext sslContext = SSLContexts.custom()
                .loadKeyMaterial(readStore(), KEYPASS.toCharArray())
                .build();
                this.httpClient = HttpClients.custom().setSSLContext(sslContext).build();
                //
        } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException | UnrecoverableKeyException e) {
            throw new FooException("Could not initialize FooRs:" + e.getMessage());
        }
        
    }

这个问题是由我的 class 路径上的旧版本的 httpclient-cache 引起的