BandStructure.java 缺少从 jdk 8 升级到 jdk 11

BandStructure.java missing upgrading to jdk 11 from jdk 8

openjdk-8u45-b14\jdk\src\share\classes\com\sun\java\util\jar\pack\BandStructure.java

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

Pack200 没了

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

参见JEP 367: Remove the Pack200 Tools and API


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

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

BandStructure 确实仍然存在于 Java 11 中,但是 Java 编译器 + 模块系统现在使应用程序代码更难依赖 JVM 内部 class es.

BandStructure class 仍然存在于 Java 13 之前的 OpenJDK 代码库中,但在 Java 14 之前就消失了。因此 class 是一个在 Java 11 中弃用并在 Java 14 中删除的旧 pack200unpack200 实用程序的组件。

是否有 BandStructure 的替代品?

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

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


如果你非常想在 Java 11 中继续使用 BandStructure,你 可以 考虑使用 --add-exports 等等,如 JEP 261。然而,这只是把问题拖到以后。到 Java 14 时,class 完全消失了


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