10

我的模块化 JavaFX 应用程序有问题。我创建了一个 JavaFX 项目并添加了 JavaFX 库,并且 JavaFX 模块得到了认可。但是,我不断收到这些错误消息:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

特此附上完整设置的图像:

在此处输入图像描述

编辑:

这是所有错误消息:

/usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.library.path=
/home/thenekolite/Documents/JavaTools/javafx-sdk-11.0.1/lib --module-
-path=~/Documents/JavaTools/javafx-sdk-11.0.1/lib 
--add-modules=javafx.controls,javafx.fxml
--add-modules javafx.base,javafx.graphics --add-reads
-javaagent:/home/thenekolite/idea-IU-183.4588.61/
lib/idea_rt.jar=35937:/home/thenekolite/idea-IU-183.4588.61/bin
-Dfile.encoding=UTF-8 -classpath /home/thenekolite/IdeaProjects/
Latihan1/out/production/Latihan1:/home thenekolite/Documents/JavaTools/
javafx-sdk-11.0.1/lib/src.zip:/home/thenekolite/Documents/JavaTools/
javafx-sdk-11.0.1/lib/javafx-swt.jar:/homehome/thenekolite/Documents
/JavaTools/javafx-sdk-11.0.1/lib/javafx.fxml.jar:/home/thenekolite/
Documents/JavaTools/javafx-sdk-11.0.1/libjavafx.media.jar:
/home/thenekolite/Documents/JavaTools/javafx-sdk-11.0.1/lib/
/javafx.swing.jar:/home/thenekolite/Documents/JavaTools/javafx
sdk-11.0.1/lib/javafx.controls.jar:/home/thenekolite/
Documents/JavaTools/javafx-sdk-11.0.1/lib/javafx.graphics.jar
-p /home/thenekolite/Documents/JavaTools/javafx-sdk-11.0.1/lib/
/javafx.base.jar:/home/thenekolite/Documents/
JavaTools/javafx-sdk-11.0.1/lib/javafx.graphics.jar sample.Main

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found

我还添加了 vm 选项:

在此处输入图像描述

但是,我仍然收到此错误消息。

4

4 回答 4

7

由于您从 IntelliJ 作为非模块化应用程序运行,因此您需要确保将 VM 参数添加为:

--module-path /path/to/javafx-sdk-11.0.1/lib --add-modules=javafx.controls,javafx.fxml

您可以按照 JavaFX 和 IntelliJ 的文档链接然后是 IDE 的非模块化,以获取完整的设置详细信息。

于 2018-12-15T17:50:25.950 回答
0

我对netbeans有同样的问题,我正确添加了VM选项,但是我收到了这个错误,我的解决方案是从项目属性->构建->编译中禁用保存时编译

在此处输入图像描述

希望这将帮助您 intellij 或任何在 netbeans 中遇到相同问题的人。

于 2021-03-31T12:53:31.300 回答
0

建议:使用新项目向导而不是 JavaFX SDK

不要使用下载的 JavaFX SDK。使用构建工具(例如 Maven)来添加 JavaFX 和其他依赖项。使用Create new JavaFX project 向导生成您的项目。

该向导将基于构建工具(maven 或 gradle)配置模块化项目。

IMO 这是创建新项目的更容易和更好的方法。以这种方式创建的项目更易于使用、更有用且面向未来:

  1. IDE 将能够运行项目,而无需为模块系统手动指定命令行参数。这是因为:

    • IDE 可以自动从 maven 依赖中找到需要的模块,所以不需要--module-path手动指定。
    • 该项目包含一个module-info.java文件,因此您无需--add-modules手动操作。
  2. 该项目是独立的,更易于共享:

    • 如果其他人想使用它,他们只需要安装标准的 Java+Maven 或 Gradle,而不是查找和下载 JavaFX SDK。
  3. 可以使用 Jenkins 等持续集成构建工具轻松构建该项目:

    • 使用手动 SDK 依赖项设置 Jenkins 来构建项目会很棘手。
  4. 可以使用 jpackage 或 jlink 将项目链接到运行时。

    • 这是因为它是一个模块化应用程序。
  5. 您可以使用依赖机制来添加对其他软件库的依赖。

    • 任何重要的应用程序都需要额外的依赖项;最好以 IMO 相同的方式管理 JavaFX 依赖项和其他依赖项。

使用 JavaFX SDK 的故障排除步骤

您有环境问题,所以我无法给出明确的答案,只提供故障排除步骤,以便您修复环境。

  1. 遵循 Intellij 的OpenJFX IO 入门步骤

    • 如果您完全按照这些步骤操作,它应该可以工作。
  2. 如果要继续使用sdk,请将其放在没有空格的位置,或者在使用时引用路径。

  3. VM args 的 Idea UI 非常令人困惑,请确保您实际设置了 VM args 而不是程序 args。为此,请参阅以下答案:

  4. 展开 Idea 在执行时放置在控制台窗格中的 Java 执行命令,并将其复制为文本以添加到您的问题中,格式为代码。

  5. 查看 Java 执行命令时,请确保模块参数位于主类名之前,而不是之后。

  6. 将执行命令复制到命令行并尝试在那里运行。

  7. 提供模块路径时,请尝试使用实际路径(如果需要,请适当引用),而不是环境变量。

于 2022-01-23T20:45:31.463 回答
0

在 IntelliJ 中,创建项目时,执行 New > Project 向导时,选择“BootstrapFX”依赖项。

这增加了需要“org.kordamp.bootstrapfx.core;” 到您的 modules-info.java 并在 IntelliJ 2021.2.1 中为我解决了这个问题。

于 2021-08-31T15:37:48.617 回答