Tôi đang tạo một bản chụp màn hình bằng java.awt.Robot
Linux 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
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
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ả
—
ug_
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()