检查 system/computer 是否有可用的显示或图形输出

Check if system/computer has a display or graphical output available

更新: 标记为重复,我只是想提一下,这似乎是重复的,但对另一个提到的问题的回答并不完全正确。而是参考下面接受的答案。 isHeadless 在某些情况下会 return 出乎意料。

有点奇怪的情况,但最近我构建了一个非常简单的java应用程序,可以运行在console/terminal模式或JavaFX UI模式下。

但是,在没有连接任何显示器的远程计算机上使用它时。我得到一个错误,这个 JavaFX UI 应用程序无法在没有显示的系统上启动,这是非常明显的。

为了克服这个问题,我一直在寻找一种可靠的方法来检测系统是否连接了任何显示器,并且它可以启动 JavaFX 应用程序,这必须是一个独立于平台的解决方案,因为它可能是 Windows 或 Ubuntu/Linux 或 Mac 系统。

应用程序结构:

主控制台应用程序,它根据输入参数在内部执行 控制台应用程序UI 应用.

因此,如果给出任何参数,则在控制台模式下 运行,或者如果没有参数,则在 UI 模式下 运行。 这是我想检测我的主控制台应用程序中是否有可用显示的地方,如果缺少显示,它甚至不会尝试 运行 UI 应用程序。

任何关于我们如何才能实现这一点的想法或在正确方向上的建议都会很棒。

我想你可以使用 java.awt.GraphicsEnvironment

GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();

这将 return 一个包含所有可用屏幕的数组。如果此数组为空,则没有监视器。

编辑:关于isHeadless()的使用,可以看How to determine if GraphicsEnvironment exists