【问题标题】:BandStructure.java missing upgrading to jdk 11 from jdk 8BandStructure.java 缺少从 jdk 8 升级到 jdk 11
【发布时间】:2021-12-16 07:17:00
【问题描述】:
openjdk-8u45-b14\jdk\src\share\classes\com\sun\java\util\jar\pack\BandStructure.java

在 jdk11 中删除了 BandStructure.java,我正在从 jdk 8 升级到 jdk 11,并且上述文件在 jdk 11 的源代码中不存在。 请提出任何替代方案

【问题讨论】:

  • 您能否就您的意思提供更多上下文?问题不清楚,请提供更多细节,分享代码sn-p等。
  • 您查看过它的文档吗?如果不提供替代方案或解释要导入的库,则永远不会删除类

标签: java java-11


【解决方案1】:

BandStructure 在 Java 11 中仍然存在,但 Java 编译器 + 模块系统现在使应用程序代码更难依赖 JVM 内部类。

BandStructure 类在 Java 13 之前的 OpenJDK 代码库中仍然存在,但在 Java 14 中已消失。因此,该类是旧的 pack200unpack200 实用程序的一个组件,这些实用程序在 Java 11 中已被弃用并被删除在 Java 14 中。

BandStructure 有替代品吗?

嗯,在一般意义上......不,没有。 pack200unpack200 命令已从代码库中删除。

可能会替换您对 BandStructure 的特定用途...但除非您提供更多详细信息,否则我们无法就此向您提供建议。


如果您非常想在 Java 11 中继续使用 BandStructure,您可以考虑使用 --add-exports 等,如 JEP 261 中所述。然而,这只是将问题推迟到以后。在 Java 14 中,该类完全消失了


请注意,编写依赖于com.sun.* 包中的内部类的应用程序总是一个坏主意。该文档一直警告说,此类类可能会被更改或删除。在这种情况下,它已经发生了。

【讨论】:

    【解决方案2】:

    Pack200 不见了

    Pack200 功能已在 Java 14 中删除。因此您缺少的类。

    JEP 367: Remove the Pack200 Tools and API


    为了避免这些意外,我建议:

    • 阅读每个 Java 版本的发行说明
    • 使用每个非LTS 版本的 Java 进行编译和测试

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 2021-10-27
      • 2022-12-05
      • 2013-01-13
      • 2019-01-30
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多