Ich erstelle eine Bildschirmaufnahme java.awt.Robot
unter Linux mit OpenJDK 11. Das Ergebnis unter Linux ist ein ganzes schwarzes Bild. Der gleiche Code funktioniert unter Ubuntu und Windows (natürlich unter Verwendung eines anderen Dateipfads).
Irgendeine Ahnung?
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();
}
}
UPDATE: Die Ursache des Problems liegt in der Kombination von OpenJDK und Wayland. Mit Oracle JDK / JRE (13.0.1) funktioniert alles einwandfrei.
java
linux
debian
openjdk-11
Reto
quelle
quelle
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
Antworten:
Wenn Sie Wayland anstelle von XOrg verwenden, kann dies das Problem verursachen, da es mit Java-Schnittstellen für Grafikoperationen weniger stabil ist.
quelle