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 из пути сборки проекта!