Intellij IDEA 2018.2无法识别JDK 10中的JavaFX包

3
我搜索了一下,但没有找到任何详细的信息。在http://www.oracle.com/technetwork/java/javafx/downloads/index.html中,它说:

JDK 7u6版本起JavaFX已包含在标准JDK和JRE捆绑包中

但在编译包含javafx.*包的代码时我遇到了错误,提示找不到这些包。我使用的是Oracle JDK 10.0.2和Intellij Idea 2018.2。当我将$JAVA8_HOME/jre/lib/ext/jfxrt.jar作为库添加后,代码可以正常工作。

但奇怪的是,即使没有添加来自JDK 8的jar文件,我也能够构建代码以目标字节码版本8为目标。

因此问题是

如何获取最新的JavaFX?

最新的JavaFX是否在JDK 8中?

更新

JDK 10 包含JavaFX,并且能够在命令行中成功编译和运行。但在Intellij IDEA 2018.2中存在问题,无法识别JavaFX包。

Intellij中的错误信息如下:

Error:(3, 26) java: package javafx.application does not exist

注意:在编辑器中编码时没有错误(无红色波浪线),只有在Intellij中编译时才会发生错误。

问题标题已更新。


https://www.infoworld.com/article/3261066/java/javafx-will-be-removed-from-the-java-jdk.html - duffymo
我不使用IntelliJ,但根据此帖子,您在IntelliJ设置中设置的“语言级别”可能是错误的原因。 - Pagbo
1
IntelliJ确实有一系列令人困惑的设置,藏在版本控制、编译器和代码语法的黑暗角落中。如果使用Maven工具,则还需要添加设置。然后,在Java 9、10和11中逐步引入的Java模块化上加上一层,这就成为了一个构建和运行Java项目的挑战炖菜。 - Basil Bourque
@Pagbo 是的,我的问题也一样。但那里的解决方案没有起作用。语言级别必须是10或8吗? - user12043
2个回答

7

你确定这个吗?我在http://openjdk.java.net/projects/jdk/11/上没有看到放弃JavaFX的迹象。无论如何,“包括Java 10及以下版本”并不完全准确;显然,足够旧的版本没有JavaFX。 - VGR
3
@VGR https://blogs.oracle.com/java-platform-group/the-future-of-javafx-and-other-java-client-roadmap-updates - Sergey Grinev
@VGR OP已经提到在JDK 7u6之前未包含JavaFX,所以我没有重复。为了避免混淆,它也从未正式包含在OpenJDK中。 - mipa
这对我有用。我只是下载了包并在项目结构 - 库中包含了lib文件夹。希望能帮助到其他人。 - daniel lozano

6

通过以下步骤解决问题:

项目字节码版本从8更改为10,方法如下:

File > Settings > Build, Execution, Deployment > Compiler > Java Compiler

感谢您的帮助。

谢谢,它有效,但它实际上是做什么的? - Ruben Szekér
1
IntelliJ无法识别模块,因为它试图编译到Java字节码版本8,即使项目SDK是JDK 10。这可以提供与JRE 8运行已编译程序的兼容性。但是,JavaFX包是使用“Java模块”设计的,这是从JDK 9开始的。因此,我需要告诉IntelliJ编译到版本10而不是8。您可以在此处找到有关Java模块的更多信息:https://www.baeldung.com/java-9-modularity - user12043

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接