Ошибка «Невозможно создать механизм сценариев javax для javascript» при попытке создать EXE-файл

Я столкнулся с этой проблемой при попытке создать файл .exe с помощью Netbeans 13.(Пакет как -> установщик exe)

Полная ошибка:

      C:\Users\*\Documents\NetBeansProjects\*\nbproject\build-native.xml:428: The following error occurred while executing this line:
C:\Users\*\Documents\NetBeansProjects\*\nbproject\build-native.xml:436: Unable to create javax script engine for javascript
BUILD FAILED (total time: 4 seconds)

Кто-нибудь знает, в чем здесь проблема и как ее исправить?

ОБНОВИТЬ:

ОС: Виндовс 10

JavaFX: javafx-sdk-17.0.2

JDK: jdk-17.0.2

Чего я ожидаю?

  • Я ожидаю .exe файл

На самом деле нет необходимости публиковать код, потому что сборка проекта и запуск самого проекта проходят гладко (без ошибок). Проблема возникает после попытки создать установочный файл .exe с помощью Package As -> EXE Installer (как показано на рисунке):

Вы можете вернуться, чтобы увидеть полную ошибку, и когда я открываю файл build-native.xml, он указывает мне на эти строки кода:

        <target name="-jfx-copylibs" depends="init,compile,-pre-pre-jar,-pre-jar,-jfx-copylibs-warning" unless="fallback.no.javascript">
        <jfx-copylibs-js-impl/>
    </target>
    <target name="-jfx-copylibs-warning" if="fallback.no.javascript">
        <echo message="Warning: Dependent Libraries copy (-jfx-copylibs) skipped in fallback build mode due to JDK missing JavaScript support."/>
    </target>
    <macrodef name="jfx-copylibs-js-impl">
        <sequential>
            <local name="run.classpath.without.build.classes.and.dist.dir"/>
            <pathconvert property="run.classpath.without.build.classes.and.dist.dir">
                <path path="${run.classpath}"/>
                <map from="${basedir}${file.separator}${build.classes.dir}" to=""/>
                <map from="${basedir}${file.separator}${dist.jar}" to=""/>
                <scriptmapper language="javascript">

Где строка 428:

      <target name="-jfx-copylibs" depends="init,compile,-pre-pre-jar,-pre-jar,-jfx-copylibs-warning" unless="fallback.no.javascript">
        <jfx-copylibs-js-impl/>

А где строка 436:

          <pathconvert property="run.classpath.without.build.classes.and.dist.dir">

2 ответа

То, что вы пытаетесь сделать, просто не будет работать так, как вы пытаетесь это сделать:

  1. Средство NetBeans Package as EXE (в настоящее время) устарело.

  2. Он не будет работать с современными версиями Java и JavaFX.

  3. Он использует JavaScript из JDK, который был удален из JDK в JDK 15 .

  4. Он использует инструмент javafxpackager и задачи ant javafx , которые больше не существуют в JDK и были заменены jpackage в JDK 16.

  5. Он основан на том, что JavaFX упакован в один большой jar на пути к классам, что является неподдерживаемой конфигурацией выполнения, начиная с Java 11 , когда JavaFX был удален из дистрибутива Oracle JDK и распространялся в виде набора модулей.

  6. Он основан на версиях стороннего программного обеспечения Wix и InnoSetup, которые сейчас устарели.

В документации по функции экспорта NetBeans в EXE указано:

Этот учебник нуждается в обзоре. Вы можете открыть задачу JIRA или отредактировать ее в GitHub, следуя этим рекомендациям.

Причина, по которой требуется проверка, заключается в том, что эта функция не будет работать в том виде, в каком она реализована в настоящее время в NetBeans для последних версий Java и JavaFX. Это может работать для устаревших версий Java 8 от Oracle, если вы можете получить совместимое стороннее программное обеспечение для поддержки его использования. Скорее всего, вам потребуется, чтобы ваше приложение было написано для использования Oracle Java 8, а среда IDE и процесс сборки приложения работали под управлением Oracle Java 8 (что может быть невозможно для последних версий NetBeans).

В качестве альтернативы изучите ресурсы упаковки в теге JavaFX .

Я столкнулся с той же проблемой при попытке запустить проект, который я создал с использованием Java 8, с Java 19.

Что вы можете сделать, так это загрузить Java 8 и добавить ее в свой Netbeans в качестве новой платформы Java, в ней будут присутствовать пакеты JavaFX, и вам не нужно будет настраивать библиотеки JavaFX отдельно.

Вы можете загрузить Java 8 JDK с https://www.azul.com/downloads/
, в списке пакетов Java выберите JDK FX.

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