Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX未调用main(String[]args)方法_Java_Intellij Idea_Javafx - Fatal编程技术网

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

JavaFX未调用main(String[]args)方法,java,intellij-idea,javafx,Java,Intellij Idea,Javafx,我开发的程序可以作为GUI和CLI执行,具体取决于提供的参数。以下是应用程序类: public class Main extends Application { public static void main(String[] args) { if (args != null && args.length > 0 && args[0].equals("cli")) { String pathToPropert

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

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();
    }
}
当我构建工件时,IntellijIDEA创建
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);
        }
    }
}


并配置构建,以便
Main
是主类。

如何确定它绕过了主方法?您是否尝试过在程序开始时添加一些内容以查看它是否正在运行?(一声嘟嘟声/println/display something)@phflack就是因为这个,这看起来应该归咎于清单。主类是com.javafx.main.main,它绕过了类的
main
方法。我将调查您的IDE是否允许您覆盖清单;清单需要的唯一一行是
Main类:sample.Main
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();
    }

}