如何在Eclipse中使用JavaFX 11?

时间:2018-08-25 02:11:21

标签: java eclipse javafx javafx-11

我在使用JavaFX时遇到了一些麻烦。我想开始创建至少台式机或移动应用程序。因此,我发现可以使用JavaFX库。但是据我所知,它已从JDK 9中排除。我实际上是在Ubuntu 18上使用OpenJDK 11(尽管Eclipse写道我有JavaSE 10环境,在这里我也有些困惑),并且我安装了OpenJFX使用sudo apt install openjfx,但我无法使Eclipse与JavaFX一起使用。

我不确定是否有理由不将JDK 8与随附的JavaFX一起使用,但是无论如何,如何在Eclipse中的这种情况下使用JavaFX?

4 个答案:

答案 0 :(得分:16)

您的帖子中有很多要澄清的地方。我将尝试在不同的要点回答它们:

  

但是据我了解,它(JavaFX)已从JDK 9中排除。

从JDK 11开始,JavaFX将与 Oracle JDK 脱钩。我强调Oracle JDK,因为JavaFX从来都不是OpenJDK的一部分。甚至在OpenJDK 8中也没有。

  

我实际上是在Ubuntu 18上使用OpenJDK 11(尽管eclipse写道我有JavaSE 10环境,这也是我有点困惑的地方)

要获得Eclipse对Java 11的支持,您需要安装 Java 11 Support for Eclipse Photon插件。

这里有几个Examples on how to run Java 11 applications in Eclipse

  

我使用sudo apt install openjfx安装了openjfx,但无法使eclipse与JavaFX一起使用。

     

我不确定是否有理由不将JDK 8与随附的JavaFX一起使用,但是无论如何,在这种情况下如何在Eclipse中使用JavaFX?

由于OpenJDK 11或Oracle JDK 11不会与JavaFX捆绑在一起,所以最好的选择是从herehere下载JavaFX SDK并将其加载到IDE中。

如果您习惯于构建工具,则可以直接使用JavaFX runtime jars which are available in Maven Central

有关如何在OpenJDK 11上运行JavaFX 11的教程,您可以按照以下步骤操作:

JavaFX 11和Eclipse

撰写本文时,您需要Eclipse 4.9M3才能使用JavaFX 11。

一旦有了Eclipse,JDK 11和JavaFX 11 SDK,您就可以选择创建:

  • 基于模块的项目
  • 基于非模块的项目(无需module-info.java

基于模块的项目

创建一个Java项目并将Java FX 11 SDK中的JavaFX jar添加到项目的模块路径。

enter image description here

创建一个module.info并声明其对javafx.controls模块的依赖性。 javafx11是包含您的Java文件的软件包的名称。

module javafx11 {
    requires javafx.controls;
    exports javafx11;
}

运行程序\ o /

基于非模块的项目

创建一个Java项目,然后将Java FX 11 SDK中的JavaFX jar添加到项目的模块路径或类路径中。

将以下JVM args添加到项目的运行配置中:

--module-path=path-to-javafx-skd/lib --add-modules=javafx.controls

运行程序\ o /

答案 1 :(得分:6)

tl; dr

要最轻松地开始使用JavaFX,请使用Oracle品牌的Java 8版本,其中捆绑了JavaFX 8并且易于使用。

有关技术细节,请参见Using JavaFX in JRE 8。在网页的 Linked Related 部分中查找许多相关的帖子。

Java模块化

Java平台正在进行全面的重构,称为模块化

以前,Java SE(标准版)是软件的一个巨大整体,并且不断增长,并添加了越来越多的软件。没有一个应用程序会使用所有功能。

决定将Java SE分成许多单独的块,以正式定义为“模块”。一个主要好处是,应用程序可以与仅包含实际需要的模块的Java SE运行时捆绑在一起,而省略未使用的模块。请参阅jlink工具。

作为这种模块化的副产品,一些较旧的和较不受欢迎的部分(例如CORBA)已被删除,不再作为Java的标准部分来携带(尽管如果其他各方愿意,则可以选择使用它们)因此决定)。同样,将从Java SE中删除一些与Java EE相关的模块,并将其移交给Jakarta EE项目,这在逻辑上更合适。参见JEP 320: Remove the Java EE and CORBA Modules

模块化和重组的过程是一项持续多年的工作。 Java 9和Java 10完成了很多工作。Java 11中完成了一些最终步骤。

Java 11中采取的步骤之一是停止将JavaFX与Java SE捆绑在一起。参见:

因此,如果使用Java 8,那么现在就开始JavaFX开发将是最简单的。JavaFX库与Java 8捆绑在一起。您无需了解模块化,也无需费劲IDE(例如Eclipse)和项目设置以识别模块。如果您并没有迫切需要使用Java或JavaFX的最新版本,请坚持使用8,直到模块化过程和工具被平滑为止,可能会在2019年推出。

如果您坚持使用Java 11,则需要了解以下信息:

  • 通常是Java模块化,包括 module-info.java 文件。
  • 将您的IDE(Eclipse等)和其他工具更新到同时支持模块化和Java 11的更高版本。
  • 在构建工具(例如Maven或Gradle)中配置模块
  • 在您的IDE中配置模块,例如Eclipse
  • 下载JavaFX模块,或使用诸如Maven之类的依赖项管理器进行下载

这些要点在这里无法涵盖,并且在堆栈溢出的其他许多问题中也有涉及。此外,Java 11尚未正式发布。

本文也许会对您有所帮助,How to Create a Project With JavaFX on JDK 11

要了解有关Java模块化的更多信息,请阅读Nicolai Parlog的the blog和书The Java Module System

答案 2 :(得分:0)

我现在必须在大约20台计算机上解决这个问题,所以我做了以下清单:

[ ] download javafx11 from javafx11's website, put on desktop
[ ] create a MODULE based project
[ ] right click project, go to BUILD PATH
[ ] add the downloaded javafx.base/control/graphics as external jar files
[ ] put the files in a package (eg: my_big_package)
[ ] put the following in the module.java file:
module javafx11 {
    requires javafx.controls;
    exports my_big_package;
}
[ ] eat a donut from the break room

如果您没有与Eclipse结婚和/或只是想学习(或者是一名对教授/ TA没有帮助的学生),那么BlueJ当前已经内置了JavaFX并且可以使用,因此不需要任何额外的设置或下载是必要的。干净!

答案 3 :(得分:0)

好消息,现在可以下载带有JavaFX的官方OpenJDK,其中包括“ ZuluFX”: https://www.azul.com/downloads/zulu/zulufx/