From 6d56e684a3fe5ed81d2941234c5b3060ea0bab79 Mon Sep 17 00:00:00 2001 From: Steven Liu Date: Tue, 6 Jan 2026 18:10:51 +0100 Subject: [PATCH] fix(client): separate Main and UI for IDEA debugger to work Reference: https://www.reddit.com/r/JavaFX/wiki/common-problems/#wiki_how_do_i_fix_.27error.3A_javafx_runtime_components_are_missing.27.3F --- client/src/main/java/client/Main.java | 33 ++------------------------- client/src/main/java/client/UI.java | 29 +++++++++++++++++++++++ 2 files changed, 31 insertions(+), 31 deletions(-) create mode 100644 client/src/main/java/client/UI.java diff --git a/client/src/main/java/client/Main.java b/client/src/main/java/client/Main.java index 55d7fa7..a0bd716 100644 --- a/client/src/main/java/client/Main.java +++ b/client/src/main/java/client/Main.java @@ -15,37 +15,8 @@ */ package client; -import static com.google.inject.Guice.createInjector; - -import client.scenes.MainCtrl; -import client.scenes.FoodpalApplicationCtrl; -import client.utils.ServerUtils; -import com.google.inject.Injector; - -import javafx.application.Application; -import javafx.stage.Stage; - -public class Main extends Application { - - private static final Injector INJECTOR = createInjector(new MyModule()); - private static final MyFXML FXML = new MyFXML(INJECTOR); - +public class Main { public static void main(String[] args){ - launch(); - } - - @Override - public void start(Stage primaryStage) throws Exception { - - var serverUtils = INJECTOR.getInstance(ServerUtils.class); - if (!serverUtils.isServerAvailable()) { - var msg = "Server needs to be started before the client, but it does not seem to be available. Shutting down."; - System.err.println(msg); - return; - } - var foodpal = FXML.load(FoodpalApplicationCtrl.class, "client", "scenes", "FoodpalApplication.fxml"); - - var mainCtrl = INJECTOR.getInstance(MainCtrl.class); - mainCtrl.setup(primaryStage, foodpal); + UI.launch(UI.class, args); } } \ No newline at end of file diff --git a/client/src/main/java/client/UI.java b/client/src/main/java/client/UI.java new file mode 100644 index 0000000..9e1217d --- /dev/null +++ b/client/src/main/java/client/UI.java @@ -0,0 +1,29 @@ +package client; + +import client.scenes.FoodpalApplicationCtrl; +import client.scenes.MainCtrl; +import client.utils.ServerUtils; +import com.google.inject.Injector; +import javafx.application.Application; +import javafx.stage.Stage; + +import static com.google.inject.Guice.createInjector; + +public class UI extends Application { + private static final Injector INJECTOR = createInjector(new MyModule()); + private static final MyFXML FXML = new MyFXML(INJECTOR); + @Override + public void start(Stage primaryStage) throws Exception { + + var serverUtils = INJECTOR.getInstance(ServerUtils.class); + if (!serverUtils.isServerAvailable()) { + var msg = "Server needs to be started before the client, but it does not seem to be available. Shutting down."; + System.err.println(msg); + return; + } + var foodpal = FXML.load(FoodpalApplicationCtrl.class, "client", "scenes", "FoodpalApplication.fxml"); + + var mainCtrl = INJECTOR.getInstance(MainCtrl.class); + mainCtrl.setup(primaryStage, foodpal); + } +}