我在用OpenJDK11创建新的JavaFX项目时,编译时报错,无法识别javafx包。通过查找一些资料发现,JDK11中把JavaFX分离出成了一个独立的模块,下面分享一下解决方案。

1、问题原因

正如上面所说的,JavaFX 11不再是JDK的一部分,可以像使用SDK或常规依赖引用方式来解决,需要将JavaFX包含在模块路径中。

2、手动引用JavaFX11

1)JavaFX项目创建好之后,添加JavaFX的jar包的引用,如下图

httpfileaionlifexyzsourcedownloadid5bd4500adc72d91ff8d53a19

2)运行默认项目之前,可能要添加以下VM选项:

--module-path /Users/Downloads/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.fxml

3、使用Maven引用JavaFX

1)在Maven的pom.xml中添下如下内容,

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>11</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>11</version>
    </dependency>
</dependencies>

2)运行项目,应该可以编译通过