更新:作为标记重复,我只是想提一下,这似乎是重复的,但其他提到的问题的答案并不完全正确。而是参考下面接受的答案。 isHeadless 在某些情况下会返回意外的真实。
它有点奇怪,但最近我构建了一个非常简单的java应用程序,它可以在控制台/终端模式或JavaFX UI模式下运行。
但是,在没有连接任何显示器的远程计算机上使用它时。我收到一个错误,即这个JavaFX UI应用程序无法在没有显示的系统上启动,这很明显。
为了解决这个问题,我一直在寻找一种强大的方法来检测系统是否附加了任何显示器,并且它可以启动JavaFX应用程序,该应用程序必须是独立于平台的解决方案,因为它可能是Windows或Ubuntu / Linux或Mac系统。
应用程序的结构:
主控制台应用,根据输入参数在内部执行控制台应用或 UI应用。
因此,如果给出任何参数,则在控制台模式下运行,或者如果没有参数则在UI模式下运行。 这是我想检测我的主控制台应用程序中是否有可用显示的地方,如果缺少显示,它甚至不会尝试运行UI应用程序。
任何想法我们如何才能在正确的方向上实现这个或建议会很棒。
答案 0 :(得分:1)
我认为你可以使用java.awt.GraphicsEnvironment
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
将返回包含所有可用屏幕的数组。如果此数组为空,则没有监视器。
编辑:关于使用isHeadless(),您可以查看How to determine if GraphicsEnvironment exists