错误:缺少 JavaFX 运行时组件 - JavaFX 11 和 OpenJDK 11 以及 Eclipse IDE
Posted
技术标签:
【中文标题】错误:缺少 JavaFX 运行时组件 - JavaFX 11 和 OpenJDK 11 以及 Eclipse IDE【英文标题】:Error: JavaFX runtime components are missing - JavaFX 11 and OpenJDK 11 and Eclipse IDE 【发布时间】:2019-09-09 15:15:57 【问题描述】:我遇到了这个经典问题:Using JavaFX 11 with OpenJDK 11 with Eclipse IDE.
Error: JavaFX runtime components are missing, and are required to run this application
我有 OpenJDK 11.0.2
dell@dell-pc:~$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
dell@dell-pc:~$
我也有JavaFX 11 SDK
。顺便一提!如果您想知道,我正在使用 Lubuntu Linux 18.10。
然后我将 Eclipse IDE 中 JavaFX 11 SDK
中的 .jar
文件包含到库包中。
然后我将这个库包包含到我的JAdaptiveMPC
项目中。
我的代码语法没有错误,但我仍然无法编译我的项目。
你知道为什么吗?如果我从 Maven 导入所有这些 .jar
文件而不是下载 JavaFX SDK
并将其导入库中,则会出现相同的错误。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Control</groupId>
<artifactId>JAdaptiveMPC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx</artifactId>
<version>13-ea+5</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>13-ea+5</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>13-ea+5</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>13-ea+5</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>13-ea+5</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>13-ea+5</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>13-ea+5</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>13-ea+5</version>
</dependency>
</dependencies>
</project>
继续
我已经在Run Configuration
添加了这个
然后我尝试运行
仍然有错误。
【问题讨论】:
与IntelliJ IDEA - Error: JavaFX runtime components are missing, and are required to run this application 重复:如果您将项目作为Java 应用程序运行,则还需要添加VM 参数。请参阅openjfx.io/openjfx-docs/#IDE-Eclipse(来自 IDE 的非模块化)。如果您使用 Maven,请参阅 Maven 部分。 我现在已经做到了。仍然错误。我不知道为什么。 @JoséPereda 错误:与 JavaFX "11" 无关,但与 JavaFX 本身和 FXML 无关:您的 FXML 文件路径错误。只需参考资源文件夹的根目录,例如getResources("/se/danielmartensson/controller/gui.fxml")
。顺便说一句,发布问题时,代码优先于屏幕截图。
现在它正在工作@JoséPereda 非常好。我知道代码优于屏幕短片,但对于不知道如何解决此问题的初学者来说,屏幕截图比代码更有价值。
Daniel,如果我们不能测试代码,那是完全不可能帮助你的。请不要在未来提供带有代码的图像。
【参考方案1】:
您的问题不是编译项目,而是运行它。
由于您的 main
是在您的 Application
-extension 中定义的,因此运行该项目将需要在启动时在您的模块路径中使用 JavaFX。
因此,要么将您的 main
外包到与您的 Application
不同的类中,要么添加带有 VM 参数的 JavaFX 模块:
--module-path="<javafx-root>\lib" --add-modules="javafx.base,javafx.controls,..."
有关更多信息,请参阅this。
【讨论】:
您好!感谢您的回答。但我已经做到了。看看我更新的问题。 @Heretic 抱歉,我已经更仔细地检查了您的帖子。您显然是在调用FXMLLoader.setLocation(URL)
,但显然您的资源 (\JAdaptiveMPC...\gui.fxml
) 找不到。所以检查你的位置是否正确,Main.class.getResource(...)
没有返回null
。
@Reizo 你能解释一下如何:“添加带有VM参数的JavaFX模块”,正如你在回答中所说的那样。我遇到了同样的问题,并且到目前为止一直没有成功纠正它。谢谢
@TrixietheCat 您必须在使用java
启动程序时传递给定的参数。通常,您的 IDE 会在后台执行此操作,并允许您配置要传递给 VM 的参数。请参阅this 示例或查找如何在 Eclipse/IntelliJ/...中指定 vm 参数...。【参考方案2】:
这个问题很老了,但这就是它在 intellij(linux) 中对我的工作方式:
1- 运行-> 编辑配置
2-在VM Options中添加路径:
--module-path yourpath/lib --add-modules javafx.controls,javafx.fxml
【讨论】:
【参考方案3】:在 Eclipse 中,我从下拉列表中选择了这个 MODULE PATH 选项,它对我有用 - 我不需要 vm agruments。确保将 JavaFx jar 添加到 Dependencies 选项卡下的 ModulePath 中(Eclipse >> 项目 >> 配置)
【讨论】:
【参考方案4】:我正在研究 Eclipse。对我来说,使用以下 VM 参数运行类是有效的:
-p C:\<your_path>\javafx-sdk-11\lib --add-modules javafx.controls,javafx.base,javafx.fxml,javafx.graphics,javafx.media,javafx.web --add-opens=javafx.graphics/javafx.scene=ALL-UNNAMED --add-exports javafx.base/com.sun.javafx.event=ALL-UNNAMED
-Djava.library.path="C:\<your_path>\javafx-sdk-11\bin"
【讨论】:
以上是关于错误:缺少 JavaFX 运行时组件 - JavaFX 11 和 OpenJDK 11 以及 Eclipse IDE的主要内容,如果未能解决你的问题,请参考以下文章
错误:缺少 JavaFX 运行时组件 - JavaFX 11 和 OpenJDK 11 以及 Eclipse IDE
缺少 JavaFX 运行时组件,即使我的 VM 选项和模块中已经有了它们