У меня есть некоторый код, который мне нужно скомпилировать с JDK 11, который использует версию Java 100 для пакета 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, а также переопределить / обновить определенные пакеты / модули?