JavaFX没有调用main(String args)方法
我开发了可以作为GUI
执行的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(); } }
当我构建工件时,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
是主类。
- Intellij无法使用OpenJDK 11识别javafx 11
- IntelliJ IDEA没有Java 10’var’的代码完成?
- 是否可以将Intellij-IDEA配置为中断JUnit测试中的exception,以使测试失败?
- 从类和javadoc生成代码存根
- Intellij – 错误JAVA(导入等等)没有检测到
- 使用Maven在IntelliJ中构建时解决PermGen错误?
- 如何在Intellij中定义运行junit测试的顺序?
- Intellij Java 2016和Maven:如何在JAR中嵌入依赖项?
- Spark运行时错误:spark.metrics.sink.MetricsServlet无法实例化