Я собираюсь запустить образец HelloFX для Eclipse из примеров OpenJFX .
После того, как я открою образец с помощью VSCode, я вижу сообщение об ошибке: [Java] The import javafx cannot be resolved [268435846]
.
Это, очевидно, означает, что классы JavaFX не разрешены, и даже если в файле .classpath есть запись:
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11"/>
эта библиотека не может быть разрешена.
Решение JavaFX SDK
Поэтому я собираюсь заменить эту переменную фактическими банками из моего локального JavaFX SDK :
<classpathentry kind="lib" path="/Users/<user>/Downloads/javafx-sdk-11.0.2/lib/javafx.base.jar"/>
<classpathentry kind="lib" path="/Users/<user>/Downloads/javafx-sdk-11.0.2/lib/javafx.graphics.jar"/>
<classpathentry kind="lib" path="/Users/<user>/Downloads/javafx-sdk-11.0.2/lib/javafx.controls.jar"/>
<classpathentry kind="lib" path="/Users/<user>/Downloads/javafx-sdk-11.0.2/lib/javafx.fxml.jar"/>
После обновления проекта я вижу под JAVA DEPENDENCIES
эти банки.
Пока ошибка кажется исправленной, проект все ещене удается построить.
Решение JRE
Нам нужно установить JDK 11 для проекта, поэтому скачайте его с здесь .Затем откройте Eclipse и добавьте его в установленные JRE.В Java -> Installed JREs -> Execution Environments
я вижу, что для версии 11 имя JavaSE-11
.
Файл .classpath
из проекта helloFX также содержит ссылку на JRE:
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/
org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JDK11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
поэтому я собираюсь заменить JDK11
на JavaSE-11
и обновить проект.Я вижу под JAVA DEPENDENCIES
, что есть ссылка на JRE System Library [JavaSE-11]
.
Решение JAVA_HOME
Нам нужно установить java.home
в VSCode.
Это можно сделать в settings.json
в «Предпочтения-> Настройки-> Настройки рабочего пространства»:
{
"java.dependency.packagePresentation": "hierarchical",
"java.home":"/Users/<user>/Downloads/jdk-11.0.2.jdk/Contents/Home"
}
После измененияэто, вы получите всплывающее окно с сообщением Java Language Server configuration changed, please restart VS Code.
, поэтому перезапустите его.
Попробуйте его
Мы видим, что ошибок нет, тамэто даже папка bin
с результатом сборки, который автоматически делает VSCode.
Можем ли мы ее запустить?Если мы попробуем это сделать, мы получим ошибку:
Error: JavaFX runtime components are missing, and are required to run this application
Это ошибка, которую вы получаете при использовании JavaFX 11 без указанияmodule-path.
Решение аргументов VM
Последний шаг заключается в добавлении необходимых аргументов vm.
Это можно сделать в launch.json
файл.Он содержит конфигурацию по умолчанию, которую мы можем изменить, добавив новую запись для vmArgs
, включая --module-path
с локальным путем к JavaFX SDK и --add-modules
с необходимыми модулями JavaFX:
{
"configurations": [
{
"type": "java",
"name": "CodeLens (Launch) - Main",
"request": "launch",
"vmArgs": "--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib
--add-modules javafx.controls,javafx.fxml",
"mainClass": "hellofx.Main",
"projectName": "hellofx"
}
]
}
Теперь у нас все установлено.
Запустите проект еще раз, и он должен работать.
Обратите внимание, что я впервые пользуюсь VSCode, поэтому явозможно, пропустил что-то очевидное, и, возможно, некоторые из этих шагов можно было бы избежать или упростить.