JavaFX-11 в VSCode: ошибка: не удалось найти или загрузить основной класс Files \ Java \ javafx-sdk-11.0.2 \ lib

Я пытался настроить JavaFX-11 в Visual Studio Code.

Я нашел этот пост JavaFX-11 с VSCode, в котором объясняется, как это сделать, и следил за шаги.

Однако мне нужно включить путь модуля к JavaFX SDK, добавив запись для vmArgs в файл launch.json:

{
"configurations": [
    {
        "type": "java",
        "name": "CodeLens (Launch) - Main",
        "request": "launch",
        "vmArgs": "--module-path C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib --add-modules javafx.controls,javafx.fxml",
        "mainClass": "hellofx.Main",
        "projectName": "hellofx"
    }
]

}

Как вы можете видеть в записи vmArgs, это мой локальный путь к JavaFX SDK. Однако, когда я пытаюсь запустить программу, я получаю следующую ошибку:

Ошибка: не удалось найти или загрузить основной класс Files \ Java \ javafx-sdk-11.0.2 \ lib Причина: java.lang.ClassNotFoundException: Files \ Java \ javafx-sdk-11.0.2 \ lib

Последние часы я пытаюсь понять, почему это не работает. Я неправильно пишу аргументы? Я видел, что есть .jmods файлов. Стоит ли мне скачивать эти файлы? Есть ли другой способ указать путь к модулю?

Стоит упомянуть, что я запускаю Visual Studio Code в Windows 10, поэтому мне нужно использовать escape-последовательность, чтобы использовать обратную косую черту.


person Franklin Bello    schedule 03.03.2019    source источник


Ответы (3)


Как вы можете видеть по опубликованной вами ошибке:

Ошибка: не удалось найти или загрузить основной класс Files \ Java \ javafx-sdk-11.0.2 \ lib

ясно, что проблема связана с пространством, которое у вас есть в Program Files.

Решения

В качестве возможного решения вы можете переместить свой JavaFX SDK в папку без пробелов в пути и соответствующим образом настроить vmArgs, например:

"vmArgs": "--module-path C:\\Java\\javafx-sdk-11.0.2\\lib --add-modules javafx.controls,javafx.fxml",

Хотя это работает, если вы все еще хотите сохранить свой текущий подход, вам нужно найти способ задать путь с помощью пробелов.

Основываясь на аналогичной проблеме, можно обнаружить следующее:

Пути, содержащие пробелы, должны быть заключены в двойные кавычки (экранированные).

Итак, это будет решение в вашем случае:

"vmArgs": "--module-path \"C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib\" --add-modules javafx.controls,javafx.fxml",

Обратите внимание, что это не относится к path, добавленному в .classpath файл с jar-файлами JavaFX, это будет примерно так:

<classpathentry kind="lib" path="C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib\\javafx.base.jar"/>
person José Pereda    schedule 03.03.2019
comment
Альтернативным решением было бы использовать переменную среды PROGRA ~ 1, которая делегирует Program Files. например --module-path C:\\PROGRA~1\\Java\\javafx-sdk-11.0.2\\lib. ЕСЛИ VSCode не поддерживает переменные (?) - person Terran; 04.03.2019

Добавление двойных кавычек вокруг моей переменной среды в IntelliJ решило для меня:

PATH_TO_FX="C:\Program Files\Java\javafx-sdk-11.0.2\lib"
person Cesar Dario Garcia    schedule 07.01.2021

** Если у вас возникла эта ошибка в Eclipse ** Ошибка произошла во время инициализации загрузочного уровня java.lang.module.FindException: модуль javafx.controls не найден

Удалите библиотеку JavaFX SDK из пути сборки проекта !!

person Nathan Pacey    schedule 31.03.2021