首页 > 解决方案 > JavaFx:在构建时定义操作系统

问题描述

我有一个使用 javafx 的 java 11 项目。我不希望任何使用我的程序的人安装 javafx,所以我编写了一个引用 javafx 主类的主类(参见下面的代码)。所以我可以用“java -jar myJar.jar”启动 jar,它可以在任何地方运行,而无需安装 javafx。javafx 模块在 module-info.java 中定义。现在我遇到的问题是我的 jar 包含依赖于系统的 javafx 库。我在 linux 系统上构建,所以我有 .so 文件。我的一些客户使用 Windows 系统。所以它不在他们的系统上运行。他们是一种定义(在 maven 或 java 中)目标操作系统的方法吗?这样我就可以为 Windows 构建一个 jar 了吗?或者 Perhpas 还有另一种更好的方法来解决我的问题。谢谢!

public class A {
    public static void main(String[] args) {
        B.main(args);
    }
}

public class B extends Application{
    public static void main(String[] args) {
        Application.launch(B.class, args);
    }
}

标签: javajavafx

解决方案


The way to go today is to package your JavaFX applications with jpackage. Have a look at its documentation here: https://docs.oracle.com/en/java/javase/16/jpackage/packaging-overview.html#GUID-C1027043-587D-418D-8188-EF8F44A4C06A


推荐阅读