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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.