错误:缺少JavaFX运行时组件—JavaFX11和OpenJDK 11以及Eclipse IDE
我有一个经典的问题:将JavaFX11与OpenJDK11一起使用,并与EclipseIDE一起使用错误:缺少JavaFX运行时组件—JavaFX11和OpenJDK 11以及Eclipse IDE,java,eclipse,javafx,javafx-11,gluon-desktop,Java,Eclipse,Javafx,Javafx 11,Gluon Desktop,我有一个经典的问题:将JavaFX11与OpenJDK11一起使用,并与EclipseIDE一起使用 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
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:~$
我还有javafx11sdk
。顺便说一句如果你想知道的话,我正在使用Lubuntu Linux 18.10。
然后,我将EclipseIDE中的JavaFX11SDK
中的.jar
文件包含到一个库包中
然后我将这个库包包含到我的JAdaptiveMPC
项目中。
我的代码语法没有错误,但仍然无法编译我的项目。
你知道为什么吗?如果我从Maven导入所有那些.jar
文件,而不是下载JavaFXSDK
并将其导入库中,则会出现相同的错误
<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>
4.0.0
控制
然后我试着跑
仍然存在错误。您的问题不是编译项目,而是运行项目。
由于您的main
是在您的应用程序扩展中定义的,因此在启动时运行项目需要在模块路径中使用JavaFX
因此,要么将main
外包到与应用程序不同的类中,要么添加带有VM参数的JavaFX模块:
--module-path="<javafx-root>\lib" --add-modules="javafx.base,javafx.controls,..."
--module path=“\lib”--add modules=“javafx.base,javafx.controls,…”
有关更多信息,请参阅。这个问题很老,但这是我在intellij(linux)中的工作原理:
1-转到运行->编辑配置
2-在VM选项中添加路径:
--模块路径yourpath/lib——添加模块javafx.controls,javafx.fxmlDuplicated of:如果您将项目作为Java应用程序运行,还需要添加VM参数。请参阅(IDE中的非模块化)。如果您使用Maven,也可以查看Maven部分。我现在已经这样做了。仍然是错误。我不知道为什么@JoséPeredearrors:与JavaFX“11”无关,但与JavaFX本身和FXML有关:您到FXML文件的路径是错误的。只需参考resources文件夹的根目录,如getResources(“/se/danielmartensson/controller/gui.fxml”)
。另一方面,在发布问题时,代码比截图更受欢迎。现在@JoséPereda的效果非常好。我知道代码比屏幕短片更优秀,但对于不知道如何解决这个问题的初学者来说,屏幕截图比代码更有价值。您好!谢谢你的回答。但我已经做到了。请回答我最新的问题。@异端对不起,我已经仔细检查了你的帖子。显然您正在调用fxmloader.setLocation(URL)
,但显然找不到您的资源(\JAdaptiveMPC…\gui.fxml
)。因此,请检查您的位置是否正确,并且Main.class.getResource(…)
不会返回null
@Reizo请您解释一下如何按照您在回答中所述:“添加带有VM参数的JavaFX模块”。我也遇到了同样的问题,到目前为止一直没有成功地纠正它。感谢you@TrixietheCat使用java
启动程序时,必须传递给定的参数。通常您的IDE会在幕后完成这项工作,并允许您配置要传递给VM的参数。请参阅示例或了解如何在Eclipse/IntelliJ/中指定vm参数。。。。