gpt4 book ai didi

JavaFX 不调用 main(String[] args) 方法

转载 作者:行者123 更新时间:2023-11-29 04:56:39 26 4
gpt4 key购买 nike

我开发的程序可以作为 GUICLI 执行,具体取决于所提供的参数。这是应用程序类:

public class Main extends Application {

public static void main(String[] args) {
if (args != null && args.length > 0 && args[0].equals("cli")) {
String pathToProperties = args[1];
Cli cli = new Cli(pathToProperties);
cli.loadPropertiesAndGenerateApk();
} else {
launch(args);
}
}

@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("view/sample.fxml"));

Parent root = (Parent) loader.load();
primaryStage.setTitle("Allowed Site Configurator");
primaryStage.setScene(new Scene(root, 800, 800));
primaryStage.show();
}
}

当我构建工件时,Intellij IDEA 创建 MANIFEST.MF:

Manifest-Version: 1.0
JavaFX-Version: 2.2
JavaFX-Application-Class: sample.Main
Created-By: JavaFX Packager
Main-Class: com/javafx/main/Main

当我调用 java -jar JavaFXApp.jar "cli"~/config.properties 程序时只调用 start() 方法而不调用 main() 方法第一。

问题是:如何强制先调用main()方法?

最佳答案

为 GUI 创建一个单独的类:

public class Main {

public static void main(String[] args) {
if (args != null && args.length > 0 && args[0].equals("cli")) {
String pathToProperties = args[1];
Cli cli = new Cli(pathToProperties);
cli.loadPropertiesAndGenerateApk();
} else {
Application.launch(GUIApp.class, args);
}
}
}

public class GUIApp extends Application {

@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("view/sample.fxml"));

Parent root = (Parent) loader.load();
primaryStage.setTitle("Allowed Site Configurator");
primaryStage.setScene(new Scene(root, 800, 800));
primaryStage.show();
}

}

并配置构建,使 Main 成为主类。

关于JavaFX 不调用 main(String[] args) 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33549820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com