我在IntelliJ中设置了JavaFX应用程序。这个应用程序可以从命令行运行,并作为jar的gui。除了jar中的两种模式之外,我还想发布一个本机包(在我的情况下是mac,所以dmg)。我想通过在main()中创建一个if语句来执行此操作,该语句接受指令以启动gui。这是我的班级。
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”。有没有人知道在创建本机包工件时如何传递args?
如果有更好的方法吗?这只是两个要求。
答案 0 :(得分:1)
您可以创建2个主要类:
然后你可以创建2个工件:控制台工件,ui工件。然后使用你的主要课程。
或者您可以在JavaFx应用程序工件的Java FX选项卡中定义“应用程序参数”:
这是一个简单的属性文件,带有“key = value”或只有“key”。每行一个条目。 然后你可以在start方法中获取这些参数:
@Override
public void start(Stage primaryStage) throws Exception {
Parameters parameters = getParameters();
List<String> unnamed = parameters.getUnnamed();
for (String s : unnamed) {
System.out.println(s + " (unnamed)");
Alert al = new Alert(Alert.AlertType.INFORMATION);
al.setContentText(s + " (unnamed)");
al.show();
}
List<String> raw = parameters.getRaw();
for (String s : raw) {
System.out.println(s + " (raw)");
Alert al = new Alert(Alert.AlertType.INFORMATION);
al.setContentText(s + " (raw)");
al.show();
}
}