Ошибка автономной среды в классе 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 я вижу следующее:
- Конструкторы Applet и всех тяжеловесных компонентов (*) заменяются на исключение HeadlessException, если дисплей, клавиатура и мышь не поддерживаются реализацией инструментария.
- Конструктор Robot создает исключение AWTException, если дисплей, клавиатура и мышь не поддерживаются реализацией инструментария
- Многие методы в Toolkit и GraphicsEnvironment, за исключением шрифтов, изображений и печати, изменены, чтобывызвать исключениеHeadlessException, если дисплей, клавиатура и мышь не поддерживаются
- Другие методы, которые могут быть затронуты отсутствием поддержки дисплея, клавиатуры или мыши, изменены на исключениеHeadlessException
- Стоит отметить, что исключение HeadlessException генерируется тогда и только тогда, когда isHeadless возвращает true, и что во всех комментариях javadoc должно быть указано это
Так что вам нужно проверить ваше оборудование и их драйверы.
Вы можете просто добавить эту строку кода
System.setProperty("java.awt.headless", "false");
перед
Robot robot = new Robot();
.