我在IntelliJ中安装了JavaFX应用程序。这个应用程序可以从命令行运行,并从jar中作为gui运行。除了jar中的两种模式之外,我还想发布一个本地bundle(对于我来说是mac,所以dmg)。我想通过在main()中创建一个if语句来执行此操作,该语句需要指令来启动gui。这是我的班级。如何从JavaFX中的相同代码生成jar和本地包(dmg,exe等)
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("dummy.fxml"));
primaryStage.setTitle("TODO");
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
public static void main(String[] args) {
if (args[0].equals("user_interface")) {
//launch gui version
launch(args);
} else {
//Run command line version of the app
//TODO
}
}
}
我在我的intellij项目中创建了两个构建工件。一个用于jar和一个用于javafx应用程序来生成dmg。
这个罐子完美地工作。它运行在cli中,它启动javafx应用程序,但我不知道如何在创建本地软件包时传递参数,以便可以传入“user_interface”。有没有人知道如何在创建本地捆绑件工件时传递参数?
如果有更好的方法做到这一点?这只是两个要求。
- 应该有两个工件。一个罐子和一个dmg。
- 该jar可以在cli或gui模式下运行。
也有点offtopic,但你访问索引0之前,应检查参数的个数长度:'如果(args.length> = 1 && ARGS [0]。等于....' –