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.
java
linux
debian
openjdk-11
Reto
fonte
fonte
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
Respostas:
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.
fonte