Ошибка автономной среды в классе java.awt.Robot с MAC OS

Я пытаюсь сделать снимки экрана в приложении JavaFX, используя Robot учебный класс,

это код, который я использовал в моем приложении:

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, но показывает ошибку headless environment в MAC OS на Robot robot = new Robot();

3 ответа

Решение

Это ответ на мой собственный вопрос, после поиска многих ресурсов.

Я использовал следующий код для отключения безголовой среды, и проблема решена.

static {

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

Благодарю.

Из их API я вижу следующее:

  1. Конструкторы Applet и всех тяжеловесных компонентов (*) заменяются на исключение HeadlessException, если дисплей, клавиатура и мышь не поддерживаются реализацией инструментария.
  2. Конструктор Robot создает исключение AWTException, если дисплей, клавиатура и мышь не поддерживаются реализацией инструментария
  3. Многие методы в Toolkit и GraphicsEnvironment, за исключением шрифтов, изображений и печати, изменены, чтобывызвать исключениеHeadlessException, если дисплей, клавиатура и мышь не поддерживаются
  4. Другие методы, которые могут быть затронуты отсутствием поддержки дисплея, клавиатуры или мыши, изменены на исключениеHeadlessException
  5. Стоит отметить, что исключение HeadlessException генерируется тогда и только тогда, когда isHeadless возвращает true, и что во всех комментариях javadoc должно быть указано это

Так что вам нужно проверить ваше оборудование и их драйверы.

Вы можете просто добавить эту строку кода System.setProperty("java.awt.headless", "false"); перед Robot robot = new Robot();.

Другие вопросы по тегам