当前位置: 首页 > 知识库问答 >
问题:

将JavaFX与Intellij IDEA结合使用

郑哲彦
2023-03-14

我严格遵循了一个教程,但我似乎无法让它发挥作用。本教程位于IDE的非模块化JavaFX和Intellij部分:https://openjfx.io/openjfx-docs/#install-爪哇

以下是我在尝试运行默认Intellij Idea JavaFX项目时收到的错误消息:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found

Process finished with exit code 1

通向jdk-11.0.1和javafx-sdk-11.0.1的路径:

C:\Program Files\Java

Java安装:

C:\Users\jonat>java --version
openjdk 11.0.1 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

JAVA_HOME变量(在指南中提到)设置:

C:\Users\jonat>echo %JAVA_HOME%
C:\Program Files\Java\jdk-11.0.1

PATH_TO_FX变量设置:

C:\Users\jonat>echo %PATH_TO_FX%
C:\Program Files\Java\javafx-sdk-11.0.1\lib

我真的不知道从这里去哪里。我已经精确地遵循了教程,它不起作用。任何帮助都将不胜感激,如果您需要更多信息,请发表评论。

共有2个答案

巫马盛
2023-03-14

顶级解决方案可能适用于一个简单的情况,即您没有指定VM选项,但有时可能更复杂。

如果顶级解决方案不是您的情况,那么还有另一件事需要检查:检查您的项目根文件夹是否包含。模块名称的iml文件(签入项目结构)。

如果缺少. iml,则需要在项目结构中重新创建模块。您需要在项目结构中重新创建模块,以便模块将生成并链接. iml文件。

邵俊才
2023-03-14

根据发布的命令行,这是IntelliJ应用于运行您的项目的内容:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml

因此,在虚拟机选项中,您已按教程所述逐字设置:

但您尚未将实际路径应用于路径到FX,正如在教程中该命令后插入的图片中所建议的那样:

IntelliJ没有解析该变量并且没有设置模块路径,因此您会收到显示找不到JavaFX模块的预期错误:

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

解决方案

这可以通过两种方式解决:

  1. 应用你的路径:

编辑运行配置,并在VM选项中添加路径:

--module-path "C:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml

应用并运行。它应该有效。

也可以设置环境变量。转到IntelliJ-

然后,您可以在VM选项中使用文字(不适用于Windows上的IntelliJ IDEA 2021.1(社区版))或${PATH\u TO\u FX}:

--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml

应用并运行。

注意,这是一个更持久的解决方案,可以应用于任何其他JavaFX项目。

 类似资料:
  • 我是JavaFX的新手,通常也不太熟悉使用Java中的数据库,但是我必须转换我制作的现有JavaFX程序,以删除填充TableView表的列表,并用数据库中的项目替换它,并赋予用户添加或删除的能力。对于学生来说,这基本上是一个非常简化的课程注册程序。一切正常,我只需要使用一个数据库,这样就可以使用教员端来查看哪些学生注册了哪些课程。我只是不熟悉调用数据库并将其应用到tableView的最佳方式。我

  • 问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有

  • 我已经阅读了一些关于SaaS/PaaS/IaaS的信息,我在想: 如果我提供了一个SaaS应用程序,我的客户能否使用PaaS开发和部署他自己的应用程序,PaaS将使用一些API与我的SaaS应用程序交互?还是我对云服务的理解有误?

  • 我需要使WebView的拖动事件作为SWT拖动事件可用。例如,每当WebView中的拖动事件(DOM元素被拖动,内容可编辑=true)时,我需要触发一个等效的SWT拖动事件,而不是发送,因此,我可以重新使用SWT API。有人已经这样做了吗?可以提供一些关于如何实现这一目标的提示吗? 刚刚意识到SWT的DNDEvent是包保护的,不能从外部实例化。会有变通办法,但不确定我是否走上了正确的道路。 谢

  • 问题内容: 谁能给我指出一个完整的示例,而 不是 在App Engine上使用OAuth2和Flask对Google帐户进行身份验证? 我试图让用户授予对Google日历的访问权限,然后使用该访问权限从日历中检索信息并对其进行进一步处理。我还需要存储并稍后刷新OAuth2令牌。 我看过Google的oauth2client库,可以开始检索授权代码了,但是我从那里有点迷失了。通过查看Google的O

  • 问题内容: TextMate似乎使用了我假定的内置Python版本(sys.path不起作用)。您如何配置它以使用3.1?我已经安装了3.1软件包,并且可以将IDLE用于交互式会话,但是现在需要使用TextMate。 谢谢 问题答案: TextMate使用变量的值来查找Python解释器的路径。一个好的解决方案是利用TextMate的能力来定义变量(例如基于每个项目): 打开一个新的或现有的Tex