我需要使用使用javax.annotation
软件包的Java EE版本的JDK 11进行编译的代码。具体来说,我想使用@Resource
作为可重复的注释(通用注释1.3规范),而该注释在JDK 8中不可重复。而且,由于我的代码仍然需要,因此需要在Java 8字节码级别上编译此代码。需要在JDK 8上运行。
如果我使用javac --release 8
编译代码,则必须使用javax.annotations
的JDK 8版本。理想情况下,我想使用--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放在bootclasspath的前面,但这也被--release
阻塞了
$ javac --release 8 --boot-class-path foo
error: option --boot-class-path cannot be used together with --release
有什么方法可以安全地编译到较旧的Java级别,同时也可以覆盖/升级特定的包/模块?