0

我有一些代码需要用 JDK 11 编译,它使用 Java EE 版本的javax.annotation包。具体来说,我想@Resource用作可重复注释(Common Annotations 1.3 规范),而注释在 JDK 8 中不可重复。此外,我需要在 Java 8 字节码级别编译此代码,因为我的代码仍需要在 JDK 上运行8.

如果我用 编译我的代码javac --release 8,那么我将被迫使用 JDK 8 版本的javax.annotations. 理想情况下,我想使用 --upgrade-module-path,但会javac阻止此选项:

javac --release 8 --upgrade-module-path /path/to/upgraded/module/
error: option --upgrade-module-path cannot be used together with --release

在以前的 Java 级别中,我会将我的javax.annotionjar 预先添加到引导类路径中,但这也被阻止了--release

$ javac --release 8 --boot-class-path foo
error: option --boot-class-path cannot be used together with --release

有什么方法可以安全地编译到较旧的 java 级别,同时覆盖/升级特定的包/模块?

4

0 回答 0