使用okhttp3,提示【clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+】

升级到JDK 1.8.0_251后,使用okhttp3报错【clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+】。问题源于Platform.get().trustManager()在Jdk9Platform中判断错误,因1.8.0_251及以上版本含有特定于JDK9的方法。解决方案是回退到旧版JDK。
摘要由CSDN通过智能技术生成

1.错误代码

果然,换新电脑就是问题多。

今天从官网下载了jdk 1.8.0_251版本,之前用的是jdk 1.8.0_188版本,然后在执行下面代码时,就报错了!

new OkHttpClient().newBuilder()
  .sslSocketFactory(sslContext.getSocketFactory(), Platform.get().trustManager(sslContext.getSocketFactory()))
                .build();

报错:

clientBuilder.sslSocketFactory(SSLSocketFactory) not supported on JDK 9+

我这是新电脑,从没装过啥jdk 9。

2.分析

打个断点调试一下,发现是在执行 Platform.get().trustManager() 时报错了,这个get()方法会返回 Platform对象。

public class Platform {
  private static final Platform PLATFORM = findPlatform();
  public static final int INFO = 4;
  public static final int WARN = 5;
  private static final Logger logger = Logger.getLogger(OkHttpClient.class.getName());

  public static Platform get() {
    return PLATFORM;
  }
}

而这个对象有4个子类:

<
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值