JavaFX包在编译为1.8的JDK1.9中不存在

JavaFX包在编译为1.8的JDK1.9中不存在,java,intellij-idea,javafx,Java,Intellij Idea,Javafx,我有一个JavaFX项目,我想编译成一个jar,这样JRE 8和更高版本就可以运行jar了。我使用Intellij IDEA 2017 CE,运行在Mac上,使用JDK 9.0.1作为我的项目SDK 项目可针对以下渐变设置进行良好编译: sourceCompatibility = 1.9 targetCompatibility = 1.9 但是,当我将目标兼容性调整为1.8: sourceCompatibility = 1.9 targetCompatibility = 1.8 它显示了与丢

我有一个JavaFX项目,我想编译成一个jar,这样JRE 8和更高版本就可以运行jar了。我使用Intellij IDEA 2017 CE,运行在Mac上,使用JDK 9.0.1作为我的项目SDK

项目可针对以下渐变设置进行良好编译:

sourceCompatibility = 1.9
targetCompatibility = 1.9
但是,当我将目标兼容性调整为
1.8

sourceCompatibility = 1.9
targetCompatibility = 1.8
它显示了与丢失的JavaFX库相关的错误流:

Error:(1, 26) java: package javafx.application does not exist
Error:(2, 23) java: package javafx.geometry does not exist
Error:(3, 23) java: package javafx.geometry does not exist
Error:(4, 20) java: package javafx.scene does not exist
Error:(5, 28) java: package javafx.scene.control does not exist
...
我查看了其他stackoverflow答案,以了解发生这种情况的原因,例如:

  • 说JavaFX与JDK1.8捆绑在一起,但我使用的是JDK1.9
  • 说OpenJDK有JavaFX,但我没有使用OpenJDK
  • 说OpenJDK没有JavaFX(什么?),但我没有使用OpenJDK
  • 我还试图在构建项目之前使缓存失效,但没有任何效果


    我如何使用JDK编译到JRE 8?

    您认为向后兼容性可以这样工作的原因是什么?您正在JDK-9中构建,是否希望在JRE-8中运行(或编译)?为什么不尝试用JDK-6编写代码并将其编译成JDK-2二进制文件?我担心这将是向前兼容性。请参阅此链接可能有助于full@Mooncheesez@zlakad我认为它是这样工作的,因为在阅读之后,看起来我可以将目标JDK版本调整为我想要的任何版本。另外,您认为它是向前兼容的是什么意思?这似乎是因为我有一个更高版本的JDK,支持更低版本的@Moon cheesezWell,我认为如果我们编写一些与JDK-9兼容的代码,我们不能只为JDK-8编译它,因为有些代码无法应用于目标。我没有阅读您提供的链接,但我认为源和目标必须相同。IDK如果intelij idea(或此时的任何其他IDE)能够实际处理此问题。我会尝试使用JDK-8编写整个项目