你已经在说明问题了:
我尚未修改任何VM选项。
由于JavaFX 11不再是JDK的一部分,因此你必须从此处使用JavaFX SDK(如你所做的那样),或者使用Maven / Gradle从Maven Central检索JavaFX模块。
然后,你需要将SDK添加为库,以便IntelliJ可以找到JavaFX类。
但是,一旦做到了这一点,并且考虑到
JavaFX jar是模块,那么你仍然需要做两件事:
- 使JavaFX模块可用于你的模块路径
- 定义要添加到项目中的模块
根据你的
IntelliJ输出,它在默认情况下添加
javafx.graphics和
javafx.base:
--add-modules javafx.base,javafx.graphics-p /usr/lib/jvm/javafx-sdk-11.0.2/lib/javafx.base.jar:/usr/lib/jvm/javafx-sdk-11.0.2/lib/javafx.graphics.jar
(请注意
-p与相同–
module-path)
这说明了为什么你的项目在第一种情况下运行,即当你没有将控件添加到场景中时,仅运行StackPane属于
javafx.graphics模块的控件,而在添加时添加了Label属于javafx.controls 模块的控件时,失败并显示已发布的异常。
已经说过很多次了:你需要为项目设置所需的VM选项。
首先阅读
https://openjfx.io/openjfx-docs/上的文档,包括IntelliJ文档,IDE的非模块化项目部分。并阅读第4部分。添加VM选项。
因此,单击运行->编辑配置,然后添加:
-p /usr/lib/jvm/javafx-sdk-11.0.2/lib --add-modules javafx.controls
应用并运行,该问题将得到解决。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)