JavaFX-11 in VSCode: Error: Could not find or load main class Files\Java\javafx-sdk-11.0.2\lib
JavaFX-11 in VSCode: Error: Could not find or load main class Files\Java\javafx-sdk-11.0.2\lib
我一直在尝试在 Visual Studio 代码中设置 JavaFX-11。
我找到了这个 post ,它解释了如何操作,并按照步骤操作。
但是,我需要通过在 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
个文件。我应该下载那些文件吗?还有其他方法可以指定模块路径吗?
值得一提的是,我运行宁Visual Studio代码在Windows10,所以我不得不使用转义序列来使用反斜杠。
正如您所发布的错误所示:
Error: Could not find or load main class Files\Java\javafx-sdk-11.0.2\lib
很明显,该问题与您在 Program Files
中的 space 有关。
解决方案
作为一种可能的解决方案,您可以将 JavaFX SDK 移动到路径中没有 spaces 的文件夹,并相应地设置您的 vmArgs,例如:
"vmArgs": "--module-path C:\Java\javafx-sdk-11.0.2\lib --add-modules javafx.controls,javafx.fxml",
虽然这可行,但如果您仍想保持当前的方法,则必须找到一种方法来设置带有 spaces 的路径。
基于类似的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",
请注意,这不适用于在 .classpath
文件中使用 JavaFX jar 添加的 path
,它将像这样:
<classpathentry kind="lib" path="C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.base.jar"/>
在 IntelliJ 中为我的环境变量添加双引号为我解决了:
PATH_TO_FX="C:\Program Files\Java\javafx-sdk-11.0.2\lib"
** 如果您在 Eclipse 上遇到此错误**
"引导层初始化时出错
java.lang.module.FindException: 未找到模块 javafx.controls"
从项目的构建路径中删除 JavaFX SDK 库!!
我一直在尝试在 Visual Studio 代码中设置 JavaFX-11。
我找到了这个 post
但是,我需要通过在 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
个文件。我应该下载那些文件吗?还有其他方法可以指定模块路径吗?
值得一提的是,我运行宁Visual Studio代码在Windows10,所以我不得不使用转义序列来使用反斜杠。
正如您所发布的错误所示:
Error: Could not find or load main class Files\Java\javafx-sdk-11.0.2\lib
很明显,该问题与您在 Program Files
中的 space 有关。
解决方案
作为一种可能的解决方案,您可以将 JavaFX SDK 移动到路径中没有 spaces 的文件夹,并相应地设置您的 vmArgs,例如:
"vmArgs": "--module-path C:\Java\javafx-sdk-11.0.2\lib --add-modules javafx.controls,javafx.fxml",
虽然这可行,但如果您仍想保持当前的方法,则必须找到一种方法来设置带有 spaces 的路径。
基于类似的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",
请注意,这不适用于在 .classpath
文件中使用 JavaFX jar 添加的 path
,它将像这样:
<classpathentry kind="lib" path="C:\Program Files\Java\javafx-sdk-11.0.2\lib\javafx.base.jar"/>
在 IntelliJ 中为我的环境变量添加双引号为我解决了:
PATH_TO_FX="C:\Program Files\Java\javafx-sdk-11.0.2\lib"
** 如果您在 Eclipse 上遇到此错误** "引导层初始化时出错 java.lang.module.FindException: 未找到模块 javafx.controls"
从项目的构建路径中删除 JavaFX SDK 库!!