java - 如何使用java 10在maven中添加javafx依赖项

标签 java ubuntu javafx java-10

我切换到了 ubuntu 18.04。 其中默认 jvm 为 java 10

现在我使用 javafx 的应用程序无法再编译。

 cannot find symbol
[ERROR]   symbol:   class ObservableMap

我尝试向 maven-compiler-plugin 添加参数来加载 javafx.graphics 模块。

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArgs>
                    <arg>--add-modules</arg>
                    <arg>javafx.graphics</arg>
                </compilerArgs>
            </configuration>
        </plugin>

结果:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] module not found: javafx.graphics

当然,java --list-modules | grep fx 不返回任何内容。

我花了 10 多个小时试图解决这个问题。

TL:DR 我应该如何使用 Java 10 编译我的 JavaFX 模块?

最小项目:

/pom.xml

<project>
    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>
    <name>java10fx</name>

    <artifactId>java10fx</artifactId>
    <version>0.0.1</version>
    <groupId>my.test</groupId>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <release>10</release>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

/src/main/java/MyApp.java

import javafx.application.Application;
import javafx.stage.Stage;

public class MyApp  extends Application{

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {}

}

错误:

java10fx/src/main/java/MyApp.java:[1,26] package javafx.application does not exist

最佳答案

OpenJDK 从未包含 JavaFX,从 Java 11 开始,Oracle JDK 也不会包含 JavaFX,因此 JavaFX 将必须成为常规依赖项。 OpenJFX,JavaFX 背后的项目,最近 released an early access build of a standalone JavaFX SDK它适用于 Java 10 和 11,但尚未在 Maven Central 上提供(计划在未来推出)。

现在,您必须 download the SDK手动并找到将其添加到 Maven 构建的方法,例如将其部署到 Nexus 或将其包含在存储库的文件夹中。一旦它在 Maven Central 上可用,您就可以像使用任何其他依赖项一样使用它。

关于java - 如何使用java 10在maven中添加javafx依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50510033/

相关文章:

java - 使用二维对象数组出现空指针异常错误

java - InplaceSelect 适用于对象而不是字符串

java - 循环中的跳转值 "for"

python - 如何删除 0.9.7 版的 sqlalchemy 并安装 0.7.8 版?

java - Spring bean 范围为 "one object per test method"

python - BLAS/LAPACK 未安装 : How to install it?

Android Studio,Gradle 错误。 Prolog 中不允许的内容

JavaFX 如何添加元素,例如。从存储在数据库 Mysql 中的项目动态创建的按钮?

java - 如何在 Eclipse 插件中使用正确版本的 JavaFX?

combobox - 带有 FXML 的组合框 JavaFx