【问题标题】:JavaFX stops working when module-info.java file created in VSCode当在 VSCode 中创建 module-info.java 文件时,JavaFX 停止工作
【发布时间】:2021-12-04 09:27:01
【问题描述】:

当我将 module-info.java 文件添加到我的 java 项目中的 src 文件夹时,我收到错误: Image of the errors and my folder setup

当我删除 module-info.java 文件时,错误消失了,但我需要 module-info 文件

模块信息.java:

module JavaFXtest{

}

还没有开始添加东西,但是每当我添加需求时,它都会显示例如:javafx.fxml 无法解析为模块 (所有 javafx jar 文件都在引用的库中)

【问题讨论】:

  • 包含您的module-info.java 代码。
  • @James_D 这是代码,它只是一个空模块:module JavaFXtest{ }
  • @James_D 我已将其添加到问题中,谢谢
  • 如果你有一个module-info.java文件,它需要说明你需要哪些其他模块。
  • @James_D 嗨,我写了需要 javafx.fxml 来测试这个,但它说 javafx.fxml 无法解析为模块

标签: java visual-studio-code javafx vscode-settings java-17


【解决方案1】:

您的module-info.java 应指定您需要哪些其他模块,并在必要时从您的模块中导出包。见,例如https://www.oracle.com/corporate/features/understanding-java-9-modules.html 进行说明。

module JavaFXtest{
    requires javafx.controls ;
    requires javafx.fxml ;
    exports com.example.mypackage ;
}

最后一行指定带有Application 子类的包。

您还需要确保 JavaFX 模块位于模块路径上。首选方法是使用依赖管理工具,例如 Maven 或 Gradle,为您管理所有这些。请参阅OpenJFX 上的“入门”说明。

【讨论】:

  • 嗨,我添加了这个:模块 JavaFXtest{ 需要 javafx.controls ;需要 javafx.fxml ;出口样品;我仍然收到声明 java.fx.fxml 无法解析为模块的错误
  • @ninesw 查看编辑。如果您看到该错误,您可能没有 javafx.fxml 模块(它是 javafx.controls 的单独模块)。
  • 当我将 javafx jar 文件添加到引用的库时,我认为所有模块都会自动出现在我的项目中。
  • @ninesw 我不知道 VSCode,所以不知道它如何配置执行,但它们需要在模块路径上(不仅仅是类路径)。
【解决方案2】:

为了解决这个问题,我编辑了 launch.json 文件并添加了这个:

"vmArgs": "--module-path \ "/Users/(name)/Documents/lib/javafx-sdk- 17.0.0.1/lib\ " --add-modules javafx.controls,javafx.fxml"

其中 name 是用户名。 目录通向javafx-sdk的library文件夹目录。

路径必须在"" 中,所以我在" 之前添加了\,这样它就可以工作,所以它不会逃脱外部" "

当您运行应用程序时,vscode 会添加参数以在运行时从引用的库中添加所需的模块。因此,您不需要运行 module-info.java 文件。

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2017-05-01
    • 2018-07-29
    相关资源
    最近更新 更多