我有一些代码需要用 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.annotion
jar 预先添加到引导类路径中,但这也被阻止了--release
$ javac --release 8 --boot-class-path foo
error: option --boot-class-path cannot be used together with --release
有什么方法可以安全地编译到较旧的 java 级别,同时覆盖/升级特定的包/模块?