带有MAC操作系统的java.awt.Robot类中出现无头环境错误



我正在尝试使用Robot类在JavaFX应用程序中捕获屏幕截图

这是我在应用程序中使用的代码:

Rectangle screenBounds = new Rectangle(Screen.getPrimary().getBounds().getWidth(),
Screen.getPrimary().getBounds().getHeight());
Robot robot = new Robot();
BufferedImage img = robot.createScreenCapture(new java.awt.Rectangle(
(int) screenBounds.getX(), (int) screenBounds.getY(), (int) 
screenBounds.getWidth(), (int) screenBounds.getHeight()));

它在windows操作系统中运行良好,但在Robot robot = new Robot();MAC操作系统中显示headless environment错误

这是在搜索了许多资源后回答我自己的问题。

我使用以下代码禁用了headless环境,问题得到了解决。

static {
System.setProperty("java.awt.headless", "false");
}

谢谢。

从他们的API我可以看到以下内容:

  1. Applet和所有重量级组件(*)的构造函数是更改为throwHeadlesException如果显示器、键盘和鼠标工具包实现不支持
  2. 如果显示器、键盘、,和鼠标不受工具包实现的支持
  3. Toolkit和GraphicsEnvironment中的许多方法字体、图像和打印除外,改为投掷HeadlessException如果显示器、键盘和鼠标不是支持
  4. 可能因缺少显示器、键盘或鼠标支持,更改为抛出HeadlesException
  5. 值得注意的是,如果并且仅当isHeadless返回true,并且所有javadoc注释应该指定

因此,您需要检查硬件及其驱动程序。

您可以简单地在Robot robot = new Robot();之前添加这行代码System.setProperty("java.awt.headless", "false");

最新更新