【问题标题】:JavaFX Modular Application, java.lang.module.FindException: Module javafx.controls not found (Java 11, Intellij)JavaFX 模块化应用程序,java.lang.module.FindException:找不到模块 javafx.controls(Java 11,Intellij)
【发布时间】:2019-05-16 15:57:59
【问题描述】:

我的模块化 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 选项:

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

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!请发布代码而不是图像:它更易于阅读且更不言自明:/
  • 命令行中一个奇怪的部分是--module- -path=~/Documents/JavaTools/javafx-sdk-11.0.1/lib-p 的存在以及模块路径,它们本质上是一回事。我会选择不存在的-p 指定路径。除了所有这些同时,您的所有 jar 都存在于 -classpath 中,这将导致在未命名的模块中解析它们。请检查what all modules are resolved at your application startup
  • 我已经阅读了您提供给我的链接,但老实说,我不知道我现在应该做什么,我只是......不明白。但是,谢谢。
  • @nullpointer 没关系,我切换到 Java 1.8 并且它可以工作!谢谢。
  • 这个问题的产生是因为VM找不到需要文件的目录。您可以观看此视频以正确配置 Java Fx。 youtu.be/sW4Qlinb0Es

标签: java intellij-idea javafx java-11 javafx-11


【解决方案1】:

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

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

您可以按照 JavaFX 和 IntelliJ 的身份关注 documentation link,然后 IDE 的非模块化 以获取完整的设置详细信息。

【讨论】:

  • 感谢您的回答,但我已按照这些步骤操作,但仍然出现错误。
  • @rizkyramadhan 在这种情况下,您能否扩展 IntelliJ 终端中可见的命令行并在问题中使用相同的内容进行更新? (终端上突出显示的绿色线以省略号结尾...)
  • 我已经编辑了帖子并放置了所有错误消息。你知道,我在我的 Windows 10 上尝试了 javafx,它运行良好,但我并不总是使用 Windows,我每天都使用 Ubuntu 18.04,但它不起作用。嗯。
  • 对于其他有问题的人,这对我有用:正如 Naman 所说.. --module-path "C:\Program Files\Java\javafx-sdk-11.0.2\lib" --添加模块=javafx.controls,javafx.fxml
  • 我也遇到了同样的问题,问题在于 javafx-sdk 的正确路径。这种情况下,解压javafx-sdk到系统后更新路径要非常用心!
【解决方案2】:

我在使用 netbeans 时遇到了同样的问题,我正确添加了 VM 选项,但出现了这个错误,我的情况的解决方案是从 project properties 禁用 Compile on save strong> -> 构建 -> 编译

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      向导将基于构建工具(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. 关注OpenJFX IO Getting Started steps for Intellij

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-26
        • 2020-02-21
        • 1970-01-01
        • 2019-03-24
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 2022-08-19
        相关资源
        最近更新 更多