Der Screenshot-Roboter erfasst auf Debian nur einen schwarzen Bildschirm


8

Ich erstelle eine Bildschirmaufnahme java.awt.Robotunter 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.


Funktioniert gut für mich (OpenJDK 11.0.4 2019-07-16 unter Ubuntu 18.04).
Robert

Das ist seltsam, ich verwende OpenJDK 11.0.5 2019-10-15 unter Debian 10 (Buster). Das Problem könnte also mit der Desktop-Umgebung zusammenhängen?
Reto

1
Ich habe xubuntu ausprobiert, dh XFCE. Ich würde bezweifeln, dass die Desktop-Umgebung einen Unterschied macht.
Robert

Danke für deinen Einsatz! Ich vermutete AppArmor als mögliche Ursache und deinstallierte es, aber es änderte nichts.
Reto

1
Ist es aus irgendeinem Grund möglich, dass Sie mehrere Grafikgeräte haben und Java eines sieht, das nicht der "Standard" ist? Vielleicht versuchen Sie Screenshots auf allenGraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
ug_

Antworten:


2

Wenn Sie Wayland anstelle von XOrg verwenden, kann dies das Problem verursachen, da es mit Java-Schnittstellen für Grafikoperationen weniger stabil ist.


Du hast vollkommen recht! Ich habe wie erwartet gearbeitet, sobald ich auf xorg zu Gnome gewechselt bin. Das Problem hängt also definitiv mit Wayland zusammen. Ich habe ein Problem auf der Projektseite gitlab.freedesktop.org/wayland/wayland/issues/130 eröffnet. Vielen Dank!
Reto
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.