【发布时间】:2021-10-22 16:01:45
【问题描述】:
我正在使用 Apache 的 httpcomponents 连接到 Web 服务。当我运行测试时,初始化客户端没有问题。然而,当我想做一个实际的集成测试时,我得到了上述异常并带有以下堆栈跟踪:
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。
我不使用任何构建工具,而且我很确定我的类路径上没有上述 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());
}
}
【问题讨论】:
-
你的项目是怎样设置的?
-
没有4.4.15版本的httpcore
-
最可能的原因是
httpclient4.3 或更早版本的副本在某处落后。 -
@Mansoor,使用带有tomcat插件的vs代码
-
@PiotrP.Karwasz 是的,我想到了类似的东西,但我似乎无法找到在哪里,有什么想法可以找到这个吗?
标签: java tomcat apache-httpcomponents