我一直在尝试在 Visual Studio Code 中设置 JavaFX-11。
我找到了这篇文章JavaFX-11 with VSCode ,其中解释了如何执行此操作,并按照步骤进行操作。
但是,我需要通过在 launch.json
文件中添加 vmArgs
条目来包含 JavaFX SDK 的模块路径:
{
"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 的本地路径。但是,当我尝试运行该程序时,出现以下错误:
Error: Could not find or load main class Files\Java\javafx-sdk-11.0.2\lib Caused by: java.lang.ClassNotFoundException: Files\Java\javafx-sdk-11.0.2\lib
在过去的几个小时里,我一直试图找出它不起作用的原因。我的论证写错了吗?我看到有 .jmods
文件。我应该下载这些文件吗?还有其他方法可以指定模块路径吗?
值得一提的是,我在 Windows 10 中运行 Visual Studio Code,因此我必须使用转义序列来使用反斜杠。
最佳答案
正如您所发布的错误所示:
Error: Could not find or load main class 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",
虽然这有效,但如果您仍然想保留当前的方法,则必须找到一种方法来设置带空格的路径。
基于类似的issue ,你可以发现:
Paths containing spaces should be surrounded by (escaped) double quotes
所以这将是您的情况的解决方案:
"vmArgs": "--module-path \"C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib\" --add-modules javafx.controls,javafx.fxml",
请注意,这不适用于使用 JavaFX jar 添加到 .classpath
文件中的 path
,如下所示:
<classpathentry kind="lib" path="C:\\Program Files\\Java\\javafx-sdk-11.0.2\\lib\\javafx.base.jar"/>
关于VSCode 中的 JavaFX-11 : Error: Could not find or load main class Files\Java\javafx-sdk-11. 0.2\lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54966653/