【问题标题】:Headless environment error in java.awt.Robot class with MAC OS带有 MAC OS 的 java.awt.Robot 类中的无头环境错误
【发布时间】:2012-11-09 08:03:55
【问题描述】:

我正在尝试使用 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 操作系统 中运行良好,但在 MAC OSRobot robot = new Robot();

显示错误 headless environment

【问题讨论】:

  • 能否把错误或异常贴出来
  • java.awt.AWTException: 机器人机器人的无头环境 = new Robot();
  • Mac 运行的是什么 Java 版本?
  • java 版本 "1.6.0_37" Java(TM) SE 运行时环境 (build 1.6.0_37-b06-434-11M3909) Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01- 434,混合模式)

标签: java macos javafx-2 headless awtrobot


【解决方案1】:

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

我用下面的代码禁用了无头环境,问题解决了。

static {

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

谢谢。

【讨论】:

  • 这项工作在无头环境中有效吗?
【解决方案2】:

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

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

所以您需要检查您的硬件及其驱动程序。

【讨论】:

    【解决方案3】:

    您只需在Robot robot = new Robot(); 之前添加这行代码System.setProperty("java.awt.headless", "false");

    【讨论】:

      猜你喜欢
      • 2018-04-09
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      相关资源
      最近更新 更多