Как устранить ошибку «записи не поддерживаются в исходном коде 11 (используйте исходный код 16 или выше для включения записей)» при объявлении в проекте Java 16?

#java-record

Вопрос:

Я установил graalvm-ce-java16-21.2.0, который предоставляет SDK java 16, и скачал и установил openjfx.io OpenJFX 16 и разработали проекты javafx Maven в NetBeans 12.4, которые отлично работают с Беном. Теперь я объявил следующую запись (новый тип записи данных, введенный в Java 14):

record EventTargetFinder(Listlt;Classlt;? extends Nodegt;gt; filterTargetTypes) { EventTargetFinder(Listlt;Classlt;? extends Nodegt;gt; filterTargetTypes) { this.filterTargetTypes = Collections.unmodifiableList(filterTargetTypes); }

NetBeans говорит мне: «записи не поддерживаются в исходном коде 11 (используйте исходный код 16 или выше для включения записей)».

Я искал в Google и StackOverflow и не смог найти соответствующую информацию. Я изучил свойства проекта NetBeans и обнаружил, что проект компилируется с Java 16, но в категории «Источники» есть метка «Исходный/двоичный формат:» с полем со списком с выбранной записью «11», и я не могу изменить выбор.

Любая помощь в преодолении этого горба была бы признательна.

Ответ №1:

Итак, что вы на самом деле используете для сборки? Maven или Netbeans? Загляните в свой POM и посмотрите, какие исходные и целевые настройки вы используете, а затем выполните чистую сборку Maven.

Комментарии:

1. Мой pom.xml показывает, что мои свойства maven как источника, так и цели равны 16. Я не уверен, что подразумевается под «чистой сборкой Maven», но я щелкнул правой кнопкой мыши pom.xml файл и выбрал «jlink», и это дало мне ту же ошибку. Не знаю, является ли это релавантом, но я создал проект, выбрав «Java с Maven» в качестве категории и «Простой архетип Maven JavaFX (Глюон)» в качестве проекта.