El robot de captura de pantalla solo captura una pantalla negra en Debian

8

Estoy creando una captura de pantalla usando java.awt.RobotLinux con OpenJDK 11. El resultado en Linux es una imagen completamente negra. El mismo código funciona en Ubuntu y Windows (usando otra ruta de archivo, por supuesto).

¿Cualquier pista?

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();
    }
}

ACTUALIZACIÓN: La causa del problema radica en la combinación de OpenJDK y Wayland. Con Oracle JDK / JRE (13.0.1) todo funciona bien.

Reto
fuente
Funciona bien para mí (OpenJDK 11.0.4 2019-07-16 en Ubuntu 18.04).
Robert
Eso es extraño, estoy usando OpenJDK 11.0.5 2019-10-15 en Debian 10 (Buster). Entonces, ¿el problema podría estar relacionado con el entorno de escritorio?
Reto
1
He intentado en xubuntu, es decir, XFCE. Dudaría que el entorno de escritorio haga la diferencia.
Robert
¡Gracias por tu esfuerzo! Sospeché que AppArmor era la causa posible y lo desinstalé, pero no cambió nada.
Reto
1
¿Es posible por alguna razón que tiene múltiples dispositivos gráficos y Java está viendo uno que no es el "predeterminado"? Tal vez intente capturas de pantalla en todosGraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
ug_

Respuestas:

2

Si está utilizando wayland en lugar de XOrg, esto puede estar causando el problema, ya que es menos estable con interfaces Java para operaciones gráficas.

James Stone
fuente
Tienes toda la razón! Trabajé como se esperaba tan pronto como cambié a Gnome en xorg. Entonces, el problema está definitivamente relacionado con Wayland, abrí un problema en el sitio de su proyecto gitlab.freedesktop.org/wayland/wayland/issues/130 ¡ Muchas gracias!
Reto