From aef8d0c5be0bbe39eb793c3b53bca490778f51b1 Mon Sep 17 00:00:00 2001 From: tresf Date: Wed, 20 May 2020 16:51:53 -0400 Subject: [PATCH] Add IDE warning when wrong libs are in-use --- src/qz/printer/action/WebApp.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/qz/printer/action/WebApp.java b/src/qz/printer/action/WebApp.java index f57cab317..cb830bd7c 100644 --- a/src/qz/printer/action/WebApp.java +++ b/src/qz/printer/action/WebApp.java @@ -32,6 +32,7 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.Method; +import java.net.URL; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; @@ -143,6 +144,9 @@ public static synchronized void initialize() throws IOException { // JavaFX native libs if (SystemUtilities.isJar()) { System.setProperty("java.library.path", new File(SystemUtilities.detectJarPath()).getParent() + "/libs/"); + } else if(hasConflictingLib()) { + // IDE helper for "no suitable pipeline found" errors + System.err.println("\n=== WARNING ===\nWrong javafx platform detected. Delete lib/javafx/ to correct this.\n"); } // Monocle default for unit tests @@ -418,4 +422,16 @@ public static void unlatch(Throwable t) { stage.hide(); } + public static boolean hasConflictingLib() { + // If running from the IDE, make sure we're not using the wrong libs + URL url = Application.class.getResource("/" + Application.class.getName().replace('.', '/') + ".class"); + String graphicsJar = url.toString().replaceAll("file:/|jar:", "").replaceAll("!.*", ""); + log.trace("JavaFX will startup using {}", graphicsJar); + if(SystemUtilities.isWindows()) { + return !graphicsJar.contains("windows"); + } else if(SystemUtilities.isMac()) { + return !graphicsJar.contains("osx") && !graphicsJar.contains("mac"); + } + return !graphicsJar.contains("linux"); + } }