Robot chụp màn hình chỉ chụp màn hình đen trên Debian


8

Tôi đang tạo một bản chụp màn hình bằng java.awt.RobotLinux với OpenJDK 11. Kết quả trên Linux là một hình ảnh toàn màu đen. Mã tương tự hoạt động trên Ubuntu và Windows (dĩ nhiên sử dụng đường dẫn tệp khác).

Có manh mối nào không?

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

CẬP NHẬT: Nguyên nhân của vấn đề nằm ở sự kết hợp giữa OpenJDK và Wayland. Với Oracle JDK / JRE (13.0.1), mọi thứ đều hoạt động tốt.


Hoạt động tốt với tôi (OpenJDK 11.0.4 2019-07-16 trên Ubuntu 18.04).
Robert

Thật kỳ lạ, tôi đang sử dụng OpenJDK 11.0.5 2019-10-15 trên Debian 10 (Buster). Vì vậy, vấn đề có thể liên quan đến môi trường máy tính để bàn?
Reto

1
Tôi đã thử trên xubfox, tức là XFCE. Tôi nghi ngờ rằng môi trường máy tính để bàn tạo ra sự khác biệt.
Robert

Cảm ơn nỗ lực của bạn! Tôi nghi ngờ AppArmor là nguyên nhân có thể và gỡ cài đặt nó, nhưng nó không thay đổi gì cả.
Reto

1
Có thể vì một số lý do mà bạn có nhiều thiết bị đồ họa và Java đang nhìn thấy một thiết bị không phải là "mặc định"? Có thể thử ảnh chụp màn hình trên tất cảGraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
ug_

Câu trả lời:


2

Nếu bạn đang sử dụng wayland thay vì XOrg thì điều này có thể gây ra sự cố vì nó kém ổn định hơn với các giao diện Java cho các hoạt động đồ họa.


Bạn hoàn toàn đúng! Tôi đã làm việc như mong đợi ngay khi được chuyển sang Gnome trên xorg. Vì vậy, vấn đề chắc chắn liên quan đến Wayland, tôi đã mở một vấn đề trên trang web dự án của họ gitlab.freedesktop.org/wayland/wayland/issues/130 Cảm ơn rất nhiều!
Reto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.