Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx11:;缺少JavaFX运行时组件";_Java_Javafx_Jgrasp_Javafx 11 - Fatal编程技术网

javafx11:;缺少JavaFX运行时组件";

javafx11:;缺少JavaFX运行时组件";,java,javafx,jgrasp,javafx-11,Java,Javafx,Jgrasp,Javafx 11,我试图在JavaFX11和Java11下运行示例JavaFX代码(取自JavaIlluminated的第5版),在Windows10下使用JGRASP2 我已经广泛地阅读了《JavaFX入门》指南(),虽然取得了一些进展,但我还是被卡住了 我下载了最新的ZIP文件,将其解压,并更新了类路径,以包含编译所需的jar文件的路径。我可以成功编译该文件。但是,当我尝试运行时,会收到以下错误消息: 错误:缺少JavaFX运行时组件,运行此应用程序需要这些组件 《入门指南》指出,可以通过向运行时调用添加以下

我试图在JavaFX11和Java11下运行示例JavaFX代码(取自JavaIlluminated的第5版),在Windows10下使用JGRASP2

我已经广泛地阅读了《JavaFX入门》指南(),虽然取得了一些进展,但我还是被卡住了

我下载了最新的ZIP文件,将其解压,并更新了类路径,以包含编译所需的jar文件的路径。我可以成功编译该文件。但是,当我尝试运行时,会收到以下错误消息:

错误:缺少JavaFX运行时组件,运行此应用程序需要这些组件

《入门指南》指出,可以通过向运行时调用添加以下选项来解决此问题:

--模块路径“[path]\lib”--添加模块=javafx.controls,javafx.fxml

我已经添加了选项,但仍然收到错误消息


以前的StackOverflow文章通常以上面的选项设置结束;唉,我不知道还能做什么。

作为第一次使用的用户,我已经设法让它工作了,但这对我来说并不简单

我想没有多少人熟悉这个IDE,所以我将发布我遵循的步骤,作为基本教程:

  • 并安装jGRASP 2.0.5_05 Beta版

  • 因为我安装了一些JDK,所以它默认选择JDK10.0.2,所以我的第一步是找到一种使用JDK11的方法。这可以在
    Settings->jGrasp Startup Settings
    中完成,在这里我可以为我的
    java
    可执行文件设置路径:

然后我重新启动了jGrasp。您可以在
Tools->System Info->Java Version
中验证IDE正在使用哪个JDK

  • 打开HelloFX示例类。我从最基本的样品开始。代码可以找到

  • Build->compile
    ,由于JavaFX不再是JDK的一部分,正如预期的那样,将抛出一系列错误:

  • 在OpenJFX文档之后,我们需要从下载JavaFXSDK,然后将库添加到类路径。转到
    Settings->PATH/CLASSPATH->Workspace
    ,按New,然后从下载的SDK/lib文件夹中逐个添加不同的JavaFX jar(至少
    JavaFX base.jar
    JavaFX graphics.jar
    JavaFX controls.jar

  • Build->compile
    现在应该可以工作了

  • 下一步:
    Build->Run
    。这失败了:

这是意料之中的。根据文档,我们需要设置模块路径并添加模块参数

  • 第一次尝试:使用
    运行参数
    。设置后:
因此,我们需要找到一种方法来设置
FLAGS2,而不是
ARGS

幸运的是,在
Environment
选项卡旁边有一个
Flags/Args
选项卡,我们可以在
FLAGS2
中设置vm参数:

--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls

我想下一步将运行一个更复杂的项目…

尝试只使用一个main方法创建一个启动器。它可能看起来像这样:

package application;

import javafx.application.Application;

public class MyAppLauncher {

    public static void main(final String[] args) {
        Application.launch(MyApp.class, args);
    }
}
(您可以暂时不在应用程序中使用旧的main方法)
这对我来说在Ubuntu下的JDK13、JavaFX13和Eclipse2019-12都很有效。
(我使用“new/Maven Project/Simple Project”创建了这个项目,然后在pom.xml中添加了JavaFX、Logging和其他内容作为依赖项,它们都位于类路径上。只有JDK位于Modulepath上)
无需担心Java模块。

如果这样做行得通,您可以在另一天花时间学习Java模块化…

…记住对这个答案投赞成票。:-)

在运行时选项中,您是否更改了指向带有JavaFX库的文件夹的路径:
“[path]\lib”
附加问题:当您说您添加了包含jar的类路径时,您是将其添加到windows类路径还是IDE类路径?1)是的,[path]被库的实际路径替换——在我的情况下,字面上是这样的“C:\Program Files\Java\javafx-sdk-11.0.2\lib”2)我更改了IDE类路径。当您键入此内容时,我收到了此解决方案的独立确认,该解决方案确实对我有效。您键入的内容比我准备的要好得多。谢谢!很高兴知道,希望此简短指南也能对其他人有用!
----jGRASP exec: java HelloFX --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls
java %S -ea %S %<FLAGS2> %<MAIN_CLASS> %<ARGS>
--module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls
----jGRASP exec: java --module-path /Users/<user>/Downloads/javafx-sdk-11.0.2/lib --add-modules javafx.controls HelloFX

 ----jGRASP: operation complete.
package application;

import javafx.application.Application;

public class MyAppLauncher {

    public static void main(final String[] args) {
        Application.launch(MyApp.class, args);
    }
}