Estou criando uma captura de tela usando java.awt.Robot
no 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.
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
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
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 todos
—
ug_
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()