Estoy creando una captura de pantalla usando java.awt.Robot
Linux 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
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
¿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 todos
—
ug_
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()