如何从JavaFX中的相同代码生成jar和本机包(dmg、exe等)
我在IntelliJ中安装了JavaFX应用程序。这个应用程序可以从命令行运行,也可以作为jar的gui运行。除了jar中的两种模式之外,我还想为mac发布一个本机包,即dmg。我想通过在main中创建一个if语句来实现这一点,该语句接受启动gui或不启动gui的指令。这是我的课如何从JavaFX中的相同代码生成jar和本机包(dmg、exe等),java,intellij-idea,javafx,javafx-2,javafx-8,Java,Intellij Idea,Javafx,Javafx 2,Javafx 8,我在IntelliJ中安装了JavaFX应用程序。这个应用程序可以从命令行运行,也可以作为jar的gui运行。除了jar中的两种模式之外,我还想为mac发布一个本机包,即dmg。我想通过在main中创建一个if语句来实现这一点,该语句接受启动gui或不启动gui的指令。这是我的课 public class Main extends Application { @Override public void start(Stage primaryStage) throws Excep
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应用程序,但我不知道如何在创建本机捆绑包时传递参数,以便传入用户界面。有人知道在创建本机bundle工件时如何传递args吗
如果有更好的方法?这仅仅是两个要求
应该有两个工件。一个罐子和一个dmg。
jar可以在cli或gui模式下运行。
您可以创建两个主要类: 控制台应用程序->隐藏用户界面 UI应用->显示UI 然后您可以创建2个工件:控制台工件、ui工件。然后使用主类 或者,您可以在JavaFx应用程序工件的JavaFx选项卡中定义应用程序参数: 这是一个简单的属性文件,key=value或只有一个键。每行一个条目。 然后,您可以在开始方法中获取以下参数:
@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();
}
}
也有点离题,但在访问索引0之前应该检查args的长度:如果args.length>=1&&args[0].equals….应用程序参数是什么?对params.properties列表或其他东西的引用?太好了。谢谢你,菲尔