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

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

Я нашел этот пост 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 entry, это мой локальный путь к 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-последовательность для использования обратной косой черты.

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"/>

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

      PATH_TO_FX="C:\Program Files\Java\javafx-sdk-11.0.2\lib"

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

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

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