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

Я пытался настроить 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, это мой локальный путь к JavaFX SDK.Однако, когда я пытаюсь запустить программу, я получаю следующую ошибку:

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

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

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

1 Ответ

0 голосов
/ 03 марта 2019

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

Ошибка: не удалось найти или загрузить основной класс 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"/>
...