我正在尝试构建一个应用程序,该应用程序具有使用JavaFX构建的GUI,并使用java 9的新版本标记来定位Java 8.
编译
import javafx.application.Application;
public class Testing {
public static void main(String... args) {
}
}
用java定位java时
javac Testing.java
工作正常(也在使用时--release 9),但是当我添加发布标志时
javac --release 8 Testing.java
它无法编译给出不存在的错误
Testing.java:1:error: package javafx.application does not exist
在JDK8 javac下编译时没有问题.我已尝试使用该--add-modules标志添加jfx模块,但在将版本设置为8时不允许使用该标志.
有没有办法在java 9下完成这项工作?看来它并不认为jfx软件包包含在java 8中,但它们是(至少在oracle的发行版中).
我在Windows上使用java 9的发行版,并且在最新的java 8版本中构建了相同的应用程序而没有任何问题.
我尝试在使用标志进行编译时将java 8安装(而不是rt.jar)中的jfxrt.jar添加到类路径中,并且它确实有效.--release 8
我的理解是发布标志的一个目的是消除安装多个JDK版本的需要(或者至少是他们的rt.jar文件).我不确定是否只是为了消除编译这个文件的需要,或者意图是不需要针对任何JDK打包文件进行编译(并且jfxrt.jar包含在JDK8中[至少在Oracle的版本]不需要特殊标志或类路径修改来使用它).
在没有确定意图的情况下,某些东西在java 8下完全编译似乎是错误的,但是需要额外的jar来编译(并且只编译不运行)在针对java 8的java 9下(但是在针对java 9时不能),以及因此需要多个JDK.对于那些更熟悉发布标志的预期实现的人来说,这应该是这样的吗?