スクリーンショットロボットがDebianで黒い画面しかキャプチャしない


8

java.awt.RobotLinuxでOpenJDK 11 を使用して画面キャプチャーを作成しています。Linuxでの結果は完全に黒い画像です。同じコードがUbuntuとWindowsで機能します(もちろん別のファイルパスを使用します)。

どんな手掛かり?

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

更新: この問題の原因は、OpenJDKとWaylandの組み合わせにあります。Oracle JDK / JRE(13.0.1)では、すべてが正常に動作します。


私には問題なく動作します(Ubuntu 18.04のOpenJDK 11.0.4 2019-07-16)。
ロバート

奇妙なことに、私はOpenJDK 11.0.5 2019-10-15をDebian 10(Buster)で使用しています。それで、問題はデスクトップ環境に関連している可能性がありますか?
レト

1
xubuntu、つまりXFCEを試してみました。デスクトップ環境が違いを生むとは思えません。
ロバートは

お疲れ様でした!私はAppArmorを原因と考え、アンインストールしましたが、何も変わりませんでした。
レト

1
何らかの理由で複数のグラフィックデバイスがあり、Javaが「デフォルト」ではないデバイスを表示している可能性はありますか?たぶん、すべてのスクリーンショットを試してくださいGraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()
ug_

回答:


2

XOrgの代わりにwaylandを使用している場合、グラフィック操作のJavaインターフェースでは安定性が低いため、これが問題の原因となっている可能性があります。


あなたは完全に正しいです!xorgでGnomeに切り替えるとすぐに、私は期待どおりに動作しました。問題は明らかにウェイランドに関連しているので、私は彼らのプロジェクトサイトgitlab.freedesktop.org/wayland/wayland/issues/130に問題を公開しました。どうもありがとうございました。
レト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.