static Boolean isHeadless_cache; static bool isHeadless() { if (isHeadless_cache != null) ret isHeadless_cache; if (isAndroid()) ret isHeadless_cache = true; if (GraphicsEnvironment.isHeadless()) ret isHeadless_cache = true; // Also check if AWT actually works. // If DISPLAY variable is set but no X server up, this will notice. try { SwingUtilities.isEventDispatchThread(); ret isHeadless_cache = false; } catch (Throwable e) { ret isHeadless_cache = true; } }