我编写了一个使用apache httpclient的java程序,该程序在我的windows上运行良好,但是在我的linux服务器上发生了错误。以下是例外。
关键代码是:
CloseableHttpClient httpclient = HttpClients.createDefault();
有错误
Exception in thread "main" org.apache.http.ssl.SSLInitializationException: TLS SSLContext not available
at org.apache.http.ssl.SSLContexts.createDefault(SSLContexts.java:58)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)
at yan.javatips.closure.HttpTest2.main(HttpTest2.java:26)
Caused by: java.security.NoSuchAlgorithmException: TLS SSLContext not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:156)
at org.apache.http.ssl.SSLContexts.createDefault(SSLContexts.java:54)
... 3 more
jar文件httpclient 4.5.2
jdk版本1.8.0_101
这个问题让我很恼火......
我在windows上运行eclipse(程序运行良好)来附加httpcore src并找到错误代码
public static SSLContext createDefault() throws SSLInitializationException {
try {
final SSLContext sslcontext = SSLContext.getInstance(SSLContextBuilder.TLS);
sslcontext.init(null, null, null);
return sslcontext;
} catch (final NoSuchAlgorithmException ex) {
throw new SSLInitializationException(ex.getMessage(), ex);
} catch (final KeyManagementException ex) {
throw new SSLInitializationException(ex.getMessage(), ex);
}
}
所以我认为SSLContext.getInstance在我的远程linux服务器上运行错误,但我不知道原因。它在窗户上确实很奇怪。