如何在 Eclipse 中使用 JavaFX 11?
How do I use JavaFX 11 in Eclipse?
我在使用 JavaFX 时遇到了一些问题。我想开始创建应用程序,桌面或移动,至少是一些东西。所以我发现我可以为它使用 JavaFX 库。但据我了解,它被排除在 JDK 9 之外。我实际上在 Ubuntu 18 上使用 OpenJDK 11(尽管 Eclipse 写道我有 JavaSE 10 环境,即我也有点困惑)并且我使用 sudo apt install openjfx
安装了 OpenJFX,但我无法使 Eclipse 与 JavaFX 一起工作。
我不确定不将 JDK 8 与包含的 JavaFX 一起使用是否有任何意义,但无论如何,我如何在 Eclipse 中的这种情况下使用 JavaFX?
tl;博士
要最轻松地开始使用 JavaFX,请使用 Java 8 的 Oracle 品牌版本,其中捆绑了 JavaFX 8 并且很容易获得。
有关技术细节,请参阅 Using JavaFX in JRE 8。查看网页的 Linked 和 Related 部分,了解许多相关的 postings。
Java模块化
Java 平台正在进行彻底的重新制定,称为 模块化 。
以前,Java SE(标准版)是一个庞大的软件,随着越来越多的软件被添加进来而不断发展壮大。没有一个应用程序会使用所有这些。
决定将 Java SE 分成许多单独的块,正式定义为“模块”。一个主要的好处是应用程序可以与 Java SE 运行时捆绑在一起,该运行时仅由实际需要的模块组成,省略了未使用的模块。请参阅 jlink 工具。
作为这种模块化的副产品,一些较旧且不太受欢迎的部分如 CORBA are being dropped, to no longer be carried as a standard part of Java (though offered for other parties to pick up if they so decide). Similarly, some Java EE related modules will be removed from Java SE and turned over to the Jakarta EE project, logically a more appropriate home. See JEP 320: Remove the Java EE and CORBA Modules。
模块化和重组的过程是一项长达数年的持续努力。在 Java 9 和 Java 10 中完成了很多工作。一些最后的步骤正在 Java 11 中完成。
在 Java 11 中采取的其中一个步骤是停止将 JavaFX 与 Java SE 捆绑在一起。参见:
- Future work section of the JavaFX Wikipedia page
- 2018-03 Oracle 博客post、The Future of JavaFX and Other Java Client Roadmap Updates
- 2018-03 Oracle 白皮书,Java Client Roadmap Update
- 诅咒,May you live in interesting times
因此,如果使用 Java 8 完成,那么现在开始使用 JavaFX 开发将是最简单的。 JavaFX 库与 Java 8 捆绑在一起。而且你不需要学习模块化,也不需要纠结你的IDE(比如Eclipse)和项目设置来识别模块。如果您没有迫切需要使用最新版本的 Java 或 JavaFX,请坚持使用 8,直到模块化过程和工具变得平滑,可能是在明年 2019 年。
如果你坚持使用Java11,你需要了解:
- Java 一般模块化,包括 module-info.java 文件。
- 将您的 IDE(Eclipse 等)和其他工具更新为支持模块化和 Java 11 的更高版本。
- 在构建工具中配置模块,例如 Maven 或 Gradle
- 在您的 IDE 中配置模块,例如 Eclipse
- 下载 JavaFX 模块,或使用 Maven 等依赖管理器来执行此操作
这些要点太多了,无法在此处涵盖,并且已在 Stack Overflow 上的许多其他问题中涵盖。此外,Java 11尚未正式发布。
也许这篇文章会有所帮助,How to Create a Project With JavaFX on JDK 11。
要了解更多关于 Java 模块化的信息,请阅读 Nicolai Parlog 撰写的 the blog and the book, The Java Module System。
您的 post 中有多处需要澄清。我会尝试用不同的要点来回答他们:
But as far as I understood, it(JavaFX) was excluded from JDK 9.
JavaFX 将从 Oracle JDK 开始 JDK 11. 我强调 Oracle JDK 因为 JavaFX 从来不是 OpenJDK 的一部分。甚至不在 OpenJDK 8.
I'm actually using OpenJDK 11 on Ubuntu 18 (Though eclipse writes I have JavaSE 10 environment, that is where I'm also a bit confused)
Eclipse中Java11支持,需要安装
Java 11 支持 Eclipse Photon 插件。
这里有几个Examples on how to run Java 11 applications in Eclipse
I installed openjfx using sudo apt install openjfx
and I can't make eclipse work with JavaFX.
I'm not sure if there's any sense not to use JDK 8 with included JavaFX, but anyway, how can I use JavaFX in such conditions in eclipse?
由于 OpenJDK 11 或 Oracle JDK 11 不会与 JavaFX 捆绑在一起,您最好的选择是从 JavaFX 下载 JavaFX SDK here or here 并将它们加载到您的 IDE.
如果你习惯构建工具,可以直接使用JavaFX runtime jars which are available in Maven Central.
关于如何运行 JavaFX 11 on OpenJDK 11的教程,您可以关注:
JavaFX 11 和 Eclipse
在撰写本文时 post,您需要 Eclipse 4.9M3 才能使用 JavaFX 11。
一旦你有了 eclipse、JDK 11 和 JavaFX 11 SDK,你可以选择创建:
- 基于模块的项目
- 非基于模块的项目(不需要
module-info.java
)
基于模块的项目
创建一个 Java 项目并将 JavaFX jar 从 Java FX 11 SDK 添加到项目的模块路径。
创建一个module.info
并声明它对javafx.controls
模块的依赖。 javafx11
是包含您的 Java 文件的包的名称。
module javafx11 {
requires javafx.controls;
exports javafx11;
}
运行 程序 \o/
非基于模块的项目
创建一个 Java 项目并将 JavaFX jar 从 Java FX 11 SDK 添加到 模块路径或类路径项目的。
将以下 JVM 参数添加到项目的 运行 配置中:
--module-path=path-to-javafx-skd/lib --add-modules=javafx.controls
运行 程序 \o/
我现在不得不在大约 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 and/or 只是想学习(或者是一个没有帮助 professor/TAs 的学生),BlueJ 目前已经内置了 JavaFX 并准备就绪,所以不需要额外的设置或下载。整洁!
我在使用 JavaFX 时遇到了一些问题。我想开始创建应用程序,桌面或移动,至少是一些东西。所以我发现我可以为它使用 JavaFX 库。但据我了解,它被排除在 JDK 9 之外。我实际上在 Ubuntu 18 上使用 OpenJDK 11(尽管 Eclipse 写道我有 JavaSE 10 环境,即我也有点困惑)并且我使用 sudo apt install openjfx
安装了 OpenJFX,但我无法使 Eclipse 与 JavaFX 一起工作。
我不确定不将 JDK 8 与包含的 JavaFX 一起使用是否有任何意义,但无论如何,我如何在 Eclipse 中的这种情况下使用 JavaFX?
tl;博士
要最轻松地开始使用 JavaFX,请使用 Java 8 的 Oracle 品牌版本,其中捆绑了 JavaFX 8 并且很容易获得。
有关技术细节,请参阅 Using JavaFX in JRE 8。查看网页的 Linked 和 Related 部分,了解许多相关的 postings。
Java模块化
Java 平台正在进行彻底的重新制定,称为 模块化 。
以前,Java SE(标准版)是一个庞大的软件,随着越来越多的软件被添加进来而不断发展壮大。没有一个应用程序会使用所有这些。
决定将 Java SE 分成许多单独的块,正式定义为“模块”。一个主要的好处是应用程序可以与 Java SE 运行时捆绑在一起,该运行时仅由实际需要的模块组成,省略了未使用的模块。请参阅 jlink 工具。
作为这种模块化的副产品,一些较旧且不太受欢迎的部分如 CORBA are being dropped, to no longer be carried as a standard part of Java (though offered for other parties to pick up if they so decide). Similarly, some Java EE related modules will be removed from Java SE and turned over to the Jakarta EE project, logically a more appropriate home. See JEP 320: Remove the Java EE and CORBA Modules。
模块化和重组的过程是一项长达数年的持续努力。在 Java 9 和 Java 10 中完成了很多工作。一些最后的步骤正在 Java 11 中完成。
在 Java 11 中采取的其中一个步骤是停止将 JavaFX 与 Java SE 捆绑在一起。参见:
- Future work section of the JavaFX Wikipedia page
- 2018-03 Oracle 博客post、The Future of JavaFX and Other Java Client Roadmap Updates
- 2018-03 Oracle 白皮书,Java Client Roadmap Update
- 诅咒,May you live in interesting times
因此,如果使用 Java 8 完成,那么现在开始使用 JavaFX 开发将是最简单的。 JavaFX 库与 Java 8 捆绑在一起。而且你不需要学习模块化,也不需要纠结你的IDE(比如Eclipse)和项目设置来识别模块。如果您没有迫切需要使用最新版本的 Java 或 JavaFX,请坚持使用 8,直到模块化过程和工具变得平滑,可能是在明年 2019 年。
如果你坚持使用Java11,你需要了解:
- Java 一般模块化,包括 module-info.java 文件。
- 将您的 IDE(Eclipse 等)和其他工具更新为支持模块化和 Java 11 的更高版本。
- 在构建工具中配置模块,例如 Maven 或 Gradle
- 在您的 IDE 中配置模块,例如 Eclipse
- 下载 JavaFX 模块,或使用 Maven 等依赖管理器来执行此操作
这些要点太多了,无法在此处涵盖,并且已在 Stack Overflow 上的许多其他问题中涵盖。此外,Java 11尚未正式发布。
也许这篇文章会有所帮助,How to Create a Project With JavaFX on JDK 11。
要了解更多关于 Java 模块化的信息,请阅读 Nicolai Parlog 撰写的 the blog and the book, The Java Module System。
您的 post 中有多处需要澄清。我会尝试用不同的要点来回答他们:
But as far as I understood, it(JavaFX) was excluded from JDK 9.
JavaFX 将从 Oracle JDK 开始 JDK 11. 我强调 Oracle JDK 因为 JavaFX 从来不是 OpenJDK 的一部分。甚至不在 OpenJDK 8.
I'm actually using OpenJDK 11 on Ubuntu 18 (Though eclipse writes I have JavaSE 10 environment, that is where I'm also a bit confused)
Eclipse中Java11支持,需要安装 Java 11 支持 Eclipse Photon 插件。
这里有几个Examples on how to run Java 11 applications in Eclipse
I installed openjfx using
sudo apt install openjfx
and I can't make eclipse work with JavaFX.I'm not sure if there's any sense not to use JDK 8 with included JavaFX, but anyway, how can I use JavaFX in such conditions in eclipse?
由于 OpenJDK 11 或 Oracle JDK 11 不会与 JavaFX 捆绑在一起,您最好的选择是从 JavaFX 下载 JavaFX SDK here or here 并将它们加载到您的 IDE.
如果你习惯构建工具,可以直接使用JavaFX runtime jars which are available in Maven Central.
关于如何运行 JavaFX 11 on OpenJDK 11的教程,您可以关注:
JavaFX 11 和 Eclipse
在撰写本文时 post,您需要 Eclipse 4.9M3 才能使用 JavaFX 11。
一旦你有了 eclipse、JDK 11 和 JavaFX 11 SDK,你可以选择创建:
- 基于模块的项目
- 非基于模块的项目(不需要
module-info.java
)
基于模块的项目
创建一个 Java 项目并将 JavaFX jar 从 Java FX 11 SDK 添加到项目的模块路径。
创建一个module.info
并声明它对javafx.controls
模块的依赖。 javafx11
是包含您的 Java 文件的包的名称。
module javafx11 {
requires javafx.controls;
exports javafx11;
}
运行 程序 \o/
非基于模块的项目
创建一个 Java 项目并将 JavaFX jar 从 Java FX 11 SDK 添加到 模块路径或类路径项目的。
将以下 JVM 参数添加到项目的 运行 配置中:
--module-path=path-to-javafx-skd/lib --add-modules=javafx.controls
运行 程序 \o/
我现在不得不在大约 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 and/or 只是想学习(或者是一个没有帮助 professor/TAs 的学生),BlueJ 目前已经内置了 JavaFX 并准备就绪,所以不需要额外的设置或下载。整洁!