Как удалить --enable-preview в Java 16?
Чтобы использовать записи с JDK 15, я использовал для компиляции с аргументами
--enable-preview --release 15
перешел на javac в моей сборке Ant. Все скомпилировано и работает нормально.
При использовании JDK 16, если я компилирую с теми же аргументами, я получаю
ошибка: недопустимый исходный код выпуска 15 с --enable-preview (функции языка предварительного просмотра поддерживаются только для выпуска 16)
Записи - это стандартная функция JDK 16, поэтому я ожидал, что буду компилировать без этих аргументов. Однако, если я их удалю, я получаю
Foo.class использует функции предварительного просмотра Java SE 15. (используйте --enable-preview, чтобы разрешить загрузку файлов классов, которые содержат функции предварительного просмотра)
И Ant сообщает об ошибке компиляции:
Сбой компиляции; подробности см. в выводе ошибок компилятора. в org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1425)
Итак, это сбой компиляции с флагами и без них. Что не так?
1 ответ
ошибка: недопустимый исходный код выпуска 15 с --enable-preview (функции языка предварительного просмотра поддерживаются только для выпуска 16)
Поскольку вы используете JDK-16, вы должны использовать 16 в качестве значения
--release
(обычно для любой функции, которая доступна в JDK-16 в качестве функции предварительного просмотра). Таким образом, для вас подойдет:
javac --enable-preview --release 16 MyClass.java
Тем не мение, record
является стандартной функцией Java-16, поэтому вам не нужно компилировать код с параметром. Вы можете скомпилировать свой код без использования этого параметра, т.е.
javac MyClass.java
Foo.class использует функции предварительного просмотра Java SE 15. (используйте --enable-preview, чтобы разрешить загрузку файлов классов, которые содержат функции предварительного просмотра)
Это не ошибка времени компиляции. Вы получаете это при попытке запустить класс .java, скомпилированный с
--enable-preview
параметр, напрямую. Вы можете запустить его как
java --enable-preview MyClass