Bra*_*rds 6 javafx visual-studio-code java-11 javafx-11
我必须在这里遗漏一些明显的东西...我正在尝试VSCode(来自Eclipse),但是我无法获得VSCode来查看JavaFX11库。在import语句中,标记了对JavaFX组件的所有引用:
[Java] The import javafx cannot be resolved
Run Code Online (Sandbox Code Playgroud)
在Eclipse中,这由“用户库”处理,该库在.classpath中生成一个条目
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)
尽管VSCode似乎可以从Eclipse理解.classpath的其余部分,但它不理解这一点。用磁盘上的实际位置替换path属性也不起作用。
为了清楚起见:
值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的
Jos*_*eda 12
我将从OpenJFX示例运行Eclipse的HelloFX示例。
使用VSCode打开示例后,看到报告的错误:[Java] The import javafx cannot be resolved [268435846]。
显然,这意味着JavaFX类无法解析,即使.classpath文件中存在一个条目,也是如此:
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11"/>
Run Code Online (Sandbox Code Playgroud)
该库无法解析。
解决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"/>
Run Code Online (Sandbox Code Playgroud)
刷新项目后,可以在JAVA DEPENDENCIES这些罐子下面看到。
尽管错误似乎已解决,但该项目仍然无法构建。
解决JRE
我们需要为该项目设置JDK 11,因此请从此处下载它。然后打开Eclipse并将其添加到已安装的JRE中。我看到Java -> Installed JREs -> Execution Environments11版本的名称是JavaSE-11。
.classpathhelloFX项目中的文件还包含对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>
Run Code Online (Sandbox Code Playgroud)
所以我将替换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"
}
Run Code Online (Sandbox Code Playgroud)
修改后,您会看到一条带有消息的弹出窗口Java Language Server configuration changed, please restart VS Code.,因此请重新启动它。
尝试一下
我们可以看到没有错误,甚至还有一个bin文件夹,其结果是VSCode自动完成的。
我们可以运行吗?如果我们尝试一下,将会得到一个错误:
Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)
这是使用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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我们已经准备好一切。
再次运行该项目,它应该可以工作。
请注意,我是VSCode的首次用户,因此我可能错过了一些显而易见的东西,也许可以避免或简化其中的一些步骤。
| 归档时间: |
|
| 查看次数: |
8830 次 |
| 最近记录: |