VSCode 中的 JavaFX-11 : Error: Could not find or load main class Files\Java\javafx-sdk-11. 0.2\lib

标签 javafx visual-studio-code java-11 javafx-11 module-path

我一直在尝试在 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/

相关文章:

git - 如何使用 Git 在 Visual Studio Code 中的分支之间切换?

java - 我应该使用哪个版本的 Java 来开发 MOJO Maven 插件?

java - 包装方法时编译错误引发异常

java - Windows 上的 Oracle JDK 11 安装程序和 JAR 文件关联

crash - JavaFX Scene构建器停止工作

node.js - Visual Studio代码,调试不起作用

java - 如何在 Java FX 中的 initialize() 方法之前让 Controller 访问主应用程序?

visual-studio-code - VSCode : can't figure out Hit Count condition

JavaFX 绑定(bind)失败,返回 "Cannot bind to untyped object."

java - 使用将在 HashMap 更改时更新的 HashMap 填充 TableView