包 sun.net.www.protocol.https 不可见

Vii*_*nha 1 java migration java-11

我正在将 java 应用程序从 java-8 迁移到 java-11,遇到问题包 sun.net.www.protocol.https 不可见。我的代码就像 URL url = new URL(null, strServletUrl, new sun.net.www.protocol.https.Handler());

那么如何在 java-11 中获取 https 处理程序,因为它在基础包中的类中不可见。

Ste*_*n C 5

最好的翻译是

 URL url = new URL(null, strServletUrl, 
                   new sun.net.www.protocol.https.Handler());
Run Code Online (Sandbox Code Playgroud)

是:

 URL url = new URL(strServletUrl);
Run Code Online (Sandbox Code Playgroud)

除非发生奇怪的事情,否则没有必要显式实例化内置协议的标准流协议处理程序。只需让 JVM 以标准方式找到处理程序即可。那么您的代码将不需要显式依赖于这个(内部)类。


如果发生了奇怪的事情,那么您现在可以使用--add-exports. 然而,随着对内部 API 的访问逐渐关闭,这可能会在较新版本的 Java 中停止工作。

所以我的建议是找出其他方法来做……无论需要什么。