Java 交叉编译与使用旧版编译器有何不同?

To what extent is Java cross-compilation different from using an older compiler?

在我正在进行的一个项目中,我们 运行 进入 an issue 与 class 在 Java.

的不同版本之间的不兼容性有关

建议的修复方法是应用 cross-compilation:我们不仅应该向编译器指定 -target-source 参数,还应该明确定义正确的 bootstrap class路径和扩展目录。

我的问题:与简单地使用旧 JDK 的编译器相比,这有什么好处?

我主要看两个reasons/benifits

  • 如果您有部分源代码使用较新的语言功能,则无法使用旧版本编译它们
  • 最终可能会在较新版本中修复编译器错误

除此之外,我认为没有理由不使用旧编译器。