You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8升级Java11时sun.net.www.protocol.https包不可见如何获取HTTPS handler

Java 11 HTTPS Handler 正确获取方案

Java 9 引入模块系统后,所有sun.*前缀的包都被划为JDK内部私有API,默认不对外暴露,因此Java 11环境下直接引用sun.net.www.protocol.https.Handler会触发包不可见的报错。

对应解决方案如下:

  • 推荐方案:省略Handler参数,依赖JDK自动加载
    绝大多数场景不需要显式指定HTTPS Handler,JDK会自动根据URL的https协议前缀匹配内置的Handler,原有代码可以直接简化为:
    URL url = new URL(strServletUrl);
    
    如果需要配置SSL连接参数、证书校验规则等,直接对打开的连接操作即可:
    HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
    // 后续完成连接配置、请求发起逻辑
    
  • 特殊场景兼容方案
    如果原有代码逻辑必须保留URL构造方法的第三个Handler参数(比如需要统一处理自定义协议逻辑),可以自行实现符合URLStreamHandler规范的HTTPS Handler,或者通过标准服务加载接口获取JDK内置的Handler实现,完全规避对sun.*包的依赖。
  • 临时过渡方案(不推荐长期使用)
    如果暂时没有时间重构代码,可以添加JVM启动参数强制暴露对应内部包,临时兼容旧代码:
    --add-exports java.base/sun.net.www.protocol.https=ALL-UNNAMED
    
    注意该方案仅作为短期过渡使用,后续JDK版本可能会直接删除该内部类,导致代码完全无法运行。

内容的提问来源于stack exchange,提问作者Viishwaas Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:39:01