我将从OpenJFX示例中为 Eclipse 运行 HelloFX 示例。
使用 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中的实际 jar 替换该变量:
<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
这些jars下面了。
虽然错误似乎已解决,但该项目仍然无法构建。
解决 JRE
我们需要为项目设置 JDK 11,所以从这里下载。然后打开 Eclipse 并将其添加到已安装的 JRE。我在下面看到Java -> Installed JREs -> Execution Environments
11 版本的名称是JavaSE-11
.
来自 helloFX 项目的.classpath
文件还包含对 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
`Preferences->Settings->Workspace Settings 中完成:
{
"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 时出现的错误。
解决 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 的第一次用户,所以我可能遗漏了一些明显的东西,也许其中一些步骤可以避免或简化。