Как удалить --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
Другие вопросы по тегам