【问题标题】:Migrating Java 1.8 version to Java 17将 Java 1.8 版本迁移到 Java 17
【发布时间】:2022-08-14 07:45:22
【问题描述】:

在构建获取包 sun.security.action 的代码时不可见

包 sun.security.action 在模块 java.base 上声明,它不会将其导出到未命名的模块。

我应该怎么办。 请多多指教,先谢谢了

    标签: migration


    【解决方案1】:

    Java 8 没有模块系统——一切都是可见的,或者只需要通过 jdk 中的档案导入(f.e.工具.jar)。

    Java 9 带来了JMS,并封装了一些jdk类。
    在您的情况下,请参阅<JAVA_HOME>/lib/src.zip!/java.base/module-info.class

    exports sun.security.action to
       java.desktop,
       java.security.jgss,
       jdk.crypto.ec,
       jdk.incubator.foreign;
    

    您的包不是公开的,但仅限于其他一些内部包。
    通过将编译器选项 --add-exports=java.base/sun.security.action=ALL-UNNAMED 添加到使固定此限制直到版本 16。

    使用版本 17 和 JEP 403 忘记所有希望。

    定义新的标准 API 来替换尚不存在标准替换的内部元素不是目标,尽管可以建议此类 API 以响应此 JEP。

    向后兼容和重要框架的优先级低于jdk安全- JCP 有时会做出奇怪的决定并与社区作对 -.-

    【讨论】:

      猜你喜欢
      • 2022-10-13
      • 2019-02-10
      • 2022-01-10
      • 1970-01-01
      • 2023-03-09
      • 2021-12-19
      • 2021-03-03
      • 2019-02-05
      • 2023-01-12
      相关资源
      最近更新 更多