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();
}
}