Скриншот-робот делает только черный экран в Debian

Я создаю снимок экрана, используя java.awt.Robot под Linux с OpenJDK 11. Результатом в Linux является полностью черное изображение. Один и тот же код работает в Ubuntu и Windows (конечно, используя другой путь к файлу).

Любая подсказка?

public void captureScreen() throws AWTException {
    Robot robot = new Robot(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice());
    BufferedImage screen = robot.createScreenCapture(new Rectangle(getDefaultToolkit().getScreenSize()));
    try {
        ImageIO.write(screen, "jpg", new File("/tmp/screenshot.jpg"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

ОБНОВЛЕНИЕ: причина проблемы заключается в сочетании OpenJDK и Wayland. С Oracle JDK/JRE (13.0.1) все работает нормально.


person Reto    schedule 23.11.2019    source источник
comment
У меня отлично работает (OpenJDK 11.0.4 16.07.2019 в Ubuntu 18.04).   -  person Robert    schedule 23.11.2019
comment
Странно, я использую OpenJDK 11.0.5 15.10.2019 на Debian 10 (Buster). Значит, проблема может быть связана с окружением рабочего стола?   -  person Reto    schedule 23.11.2019
comment
Я пробовал на xubuntu, то есть XFCE. Я сомневаюсь, что среда рабочего стола имеет значение.   -  person Robert    schedule 24.11.2019
comment
Спасибо за ваши усилия! Я заподозрил AppArmor как возможную причину и удалил его, но это ничего не изменило.   -  person Reto    schedule 24.11.2019
comment
# 1 Что вы имеете в виду под работает в Linux, но не в Ubuntu? # 2 Не могли бы вы попробовать некоторые из этих приложений alternativeto.net/software/snagit/?platform= linux, чтобы отбросить или проверить какую-то проблему или неправильную конфигурацию на уровне операционной системы?   -  person JRichardsz    schedule 30.12.2019
comment
#1 он работает на Ubuntu 18.04, но не работает на свежеустановленной последней версии Debian (10 ака Buster) #2 я попробую в эту субботу - но я думаю, что проблема скорее связана с Java, так как по умолчанию приложение для скриншотов работает как положено.   -  person Reto    schedule 30.12.2019
comment
Возможно ли, что по какой-то причине у вас несколько графических устройств, а Java видит одно, которое не используется по умолчанию? Может быть, попробовать скриншоты на всех GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()   -  person ug_    schedule 03.01.2020
comment
Нет, у меня только один интегрированный графический процессор Intel.   -  person Reto    schedule 04.01.2020


Ответы (1)


Если вы используете wayland вместо XOrg, это может быть причиной проблемы, так как он менее стабилен с интерфейсами Java для графических операций.

Изменить: эта ошибка исправлена ​​(см. ОП)

person James Stone    schedule 03.01.2020
comment
Вы совершенно правы! Я работал, как и ожидалось, как только переключился на Gnome на xorg. Таким образом, проблема определенно связана с Wayland, я открыл вопрос на их сайте проекта gitlab.freedesktop. org/wayland/wayland/issues/130 Большое спасибо! - person Reto; 04.01.2020