org.apache.http.conn.ssl.SSLConnectionSocketFactory 在 HttpClientBuilder.build() 中找不到

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

当我调用此代码时:

HttpClientBuilder clientBuilder = HttpClientBuilder.create(); 
LaxRedirectStrategy laxStrategy = new LaxRedirectStrategy();
clientBuilder = clientBuilder.setRedirectStrategy(laxStrategy);

httpClient = clientBuilder.build();   // FAILS HERE

我得到 java.lang.NoSuchFieldError: INSTANCE

看起来找不到 org.apache.http.conn.ssl.SSLConnectionSocketFactory 类,但是在我的类路径上的 jar 中找到了该类。我怎样才能找到罪魁祸首?

谢谢! 迈克

java apache-commons-httpclient
3个回答
2
投票

您的类路径上有不同版本的 Apache Commons HTTP Client。您可以使用 jdk 8 尝试以下版本。

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.1.1</version>
</dependency>

1
投票

对我来说这看起来像是一个依赖性问题。您正在寻找的课程可能存在于您的 CP 上的两个不同罐子中。


0
投票

初始化 SSLConnectionSocketFactory 字段时可能会发生这种情况:

public static final X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER
    = AllowAllHostnameVerifier.INSTANCE;

在我的例子中,org.apache.http.conn.ssl.AllowAllHostnameVerifier 类没有 INSTANCE 字段,因为它被 tika-app 遮蔽(修补)了。

检查您拥有该类的哪个依赖项(jar)以及它的外观如何。如果可能的话尝试排除它。

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