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 引起的
我正在使用 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 引起的