Возможности предварительной версии Netbeans 11.3 и Java 14

Я использую Java 14 в качестве платформы Java по умолчанию для Netbeans 11.3 (для netbeans_jdkhome установлен мой Java 14 JDK) и пытаюсь использовать функцию предварительного просмотра в простом приложении Java. Я установил исходный уровень на 14 и установил --enable-preview в качестве аргумента компилятора. Код компилируется без ошибок.

Однако, когда я пытаюсь запустить его в Netbeans, он жалуется, что основная версия файлов.class - 57, тогда как среда выполнения хорошо работает только с 58 файлами и функциями предварительного просмотра. Вот ошибка:

java.lang.UnsupportedClassVersionError: javaapplicationtest14/JavaApplicationTest14 (версия файла класса 57.65535) был скомпилирован с функциями предварительного просмотра, которые не поддерживаются. Эта версия среды выполнения Java распознает только функции предварительного просмотра для версии файла класса 58.65535.

Я проверил основную версию файлов.class, и их действительно 57. Есть идеи, почему мой проект не компилируется в уровень Java 14? Я использую сборку Ant.

4 ответа

Конфигурация проекта Netbeans (Java 14)

  • Java 14
  • Netbeans> = 11 (текущая версия: 12.0 LTS)

Необязательно:

Можно использовать sdkman или установить путь java по умолчанию:

  /opt/<jdk-install-dir>
C:\Program Files\<jdk-install-dir>

Конфигурация проекта "Выполнить"

Платформа Java

pom.xml

Примечания

  • Проверьте maven.compiler.source / maven.compiler.target
  • Проверьте build->plugins->plugin->...-> compilerArgs -> arg
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>Demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>14</maven.compiler.source>
        <maven.compiler.target>14</maven.compiler.target>
    </properties>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <compilerArgs>
                        <arg>--enable-preview</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Помимо настройки --enable-preview в качестве параметра компилятора, он также должен быть установлен в качестве параметра виртуальной машины при запуске кода:

Однако это не решает проблему, и, к сожалению, это похоже на ошибку NetBeans 11.3. Я воспроизвел вашу проблему с проектом Java с Ant и создал отчет об ошибке NETBEANS-4049 UnsupportedClassVersionError при запуске кода JDK14 с --enable-preview.

Есть несколько обходных путей, если вам нужно использовать функции предварительной версии с JDK 14 в NetBeans:

  • Запустите приложение из командной строки (с параметром --enable-preview), а не из NetBeans. Тот же код, который не работает с UnsupportedClassVersionError в NetBeans, отлично работает в этой среде, что убедительно свидетельствует о том, что NetBeans игнорирует параметр времени выполнения --enable-preview.
  • Создайте проект Java с Maven вместо проекта Java с Ant. Затем вы можете запустить свой код, который использует функции предварительного просмотра в NetBeans.

Обновите свой вопрос, указав более подробную информацию, если у вас все еще есть проблемы.

Я пытаюсь это сделать с Netbeans 15. Я хочу использовать API-интерфейс стороннего компоновщика, и завершение кода говорит:

MemoryAddress — это предварительная версия API, которая по умолчанию отключена. (используйте --enable-preview, чтобы включить предварительный просмотр API)

Это относится к предварительным версиям JDK 19 и JDK 20. Я поставил вариант ви это ничего не меняет. Если я перейду к свойствам проекта/сборке/компиляции, есть варианты выбора JDK, но нет возможности ввести параметры JDK. Кажется, чторекомендуется подсказками NetBeans, но на самом деле это невозможно сделать. Это ошибка в NB или я что-то упускаю? Очень расстраивает, потому что я хотел бы использовать некоторые из этих функций, и я трачу свое время, пытаясь заставить мой редактор кода работать. Я думаю, что это работало в предыдущих версиях NB.

Nb -javac не должен устанавливаться (он появляется в плагинах).

Если он установлен в 11.3, создается впечатление, что он создает файлы классов с версией 57, а не 58, против которых среда выполнения возражает, как указано выше.

Другие вопросы по тегам