O robô de captura de tela captura apenas uma tela preta no Debian

8

Estou criando uma captura de tela usando java.awt.Robotno Linux com o OpenJDK 11. O resultado no Linux é uma imagem totalmente preta. O mesmo código funciona no Ubuntu e Windows (usando outro caminho do arquivo, é claro).

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

ATUALIZAÇÃO: A causa do problema está na combinação do OpenJDK e Wayland. Com o Oracle JDK / JRE (13.0.1) tudo funciona bem.

Reto
fonte
Funciona bem para mim (OpenJDK 11.0.4 2019-07-16 no Ubuntu 18.04).
Robert
Isso é estranho, estou usando o OpenJDK 11.0.5 2019-10-15 no Debian 10 (Buster). Portanto, o problema pode estar relacionado ao ambiente da área de trabalho?
Reto
1
Eu tentei no xubuntu, ou seja, XFCE. Eu duvido que o ambiente da área de trabalho faça a diferença.
Robert
Obrigado pelo seu esforço! Suspeitei do AppArmor como causa possível e o desinstalei, mas não mudou nada.
Reto
1
Por algum motivo, é possível que você tenha vários dispositivos gráficos e o Java esteja vendo um que não é o "padrão"? Talvez tente capturas de tela em todosGraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
ug_

Respostas:

2

Se você estiver usando wayland em vez de XOrg, isso pode estar causando o problema, pois é menos estável com interfaces Java para operações gráficas.

James Stone
fonte
Você está perfeitamente certo! Eu trabalhei conforme o esperado, assim que mude para o Gnome no xorg. Portanto, o problema está definitivamente relacionado a Wayland. Abri uma questão no site do projeto gitlab.freedesktop.org/wayland/wayland/issues/130. Muito obrigado!
Reto