JavaFx:在构建时定义操作系统

JavaFx:在构建时定义操作系统,java,javafx,Java,Javafx,我有一个使用javafx的Java11项目。我不希望任何人使用我的程序来安装javafx,所以我编写了一个引用javafx主类的主类(见下面的代码)。因此,我可以用“java-jarmyjar.jar”启动jar,它可以在任何地方运行,而无需安装javafx。javafx模块在module-info.java中定义。 现在我有一个问题,我的jar包含依赖于系统的javafx库。我建立在linux系统上,所以我有.so文件。我的一些客户使用windows系统。所以它不会在他们的系统上运行。它们是定

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


现在的做法是使用
jpackage
打包JavaFX应用程序。请在此处查看其文档:

谢谢您的回答。在链接中,说明如下:“应用程序包必须在目标平台上构建。用于打包的系统必须包含打包工具所需的应用程序、JDK和软件。要为多个平台打包应用程序,必须在每个平台上运行打包工具。如果一个平台需要多种格式,则必须为每种格式运行一次该工具。“因此,我仍然需要在windows系统上构建它。这与我目前的情况相同。是的,因为对于所有操作系统,我都知道您需要的本机工具(如windows上的wix)仅在这些平台上可用。如果您正在寻找为所有平台构建而不拥有它们的可能性,您可以使用GitHub操作,例如。有关于如何使用JavaFX实现这一点的文档。但无论如何,您必须在所有平台上测试您的构建。或者您是否将此留给用户?
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);
    }
}