【问题标题】: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 中已消失。因此,该类是旧的 pack200 和 unpack200 实用程序的一个组件,这些实用程序在 Java 11 中已被弃用并被删除在 Java 14 中。

BandStructure 有替代品吗?

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

可能会替换您对 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
      相关资源
      最近更新 更多