From 474ea0f2ab7504c468cae2b8b5d7c84d3c0b828d Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Thu, 28 May 2026 18:07:55 +0200 Subject: [PATCH] improve toolkit initialization error handling, add hint to use -XstartOnFirstThread when needed --- ui-java/src/main/java/de/unixwork/ui/Toolkit.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ui-java/src/main/java/de/unixwork/ui/Toolkit.java b/ui-java/src/main/java/de/unixwork/ui/Toolkit.java index 684cc9e..274e0d0 100644 --- a/ui-java/src/main/java/de/unixwork/ui/Toolkit.java +++ b/ui-java/src/main/java/de/unixwork/ui/Toolkit.java @@ -90,6 +90,16 @@ public class Toolkit { propertiesData = null; } + MemorySegment ui_set_main_thread_error_msg_addr = lib.find("ui_set_main_thread_error_msg").orElseThrow(); + MethodHandle ui_set_main_thread_error_msg = linker.downcallHandle(ui_set_main_thread_error_msg_addr, FunctionDescriptor.ofVoid(ValueLayout.ADDRESS)); + try (Arena arena = Arena.ofConfined()) { + MemorySegment cstr = arena.allocateFrom("Add -XstartOnFirstThread to the JVM options."); + ui_set_main_thread_error_msg.invoke(cstr); + } catch (Throwable e) { + e.printStackTrace(); + System.exit(1); + } + // get init function MemorySegment ui_init_addr = lib.find("ui_init").orElseThrow(); FunctionDescriptor ui_init_sig = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.ADDRESS); -- 2.47.3