小编Ret*_*eto的帖子

截屏机器人仅在 Debian 上捕获黑屏

我正在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();
    }
}
Run Code Online (Sandbox Code Playgroud)

更新: 问题的原因在于OpenJDK和Wayland的组合。使用 Oracle JDK/JRE (13.0.1) 一切正常。

java linux debian openjdk-11

9
推荐指数
1
解决办法
606
查看次数

如何删除字符串两端的单引号和双引号

我想从字符串的两端删除单引号或双引号.该字符串可能包含其他引号或/和双引号,它们应保持不变 - 因此removeAll()不是一个选项.

String one = "\"some string\""; 
String two = "'some \"other string\"'";

// expected result
// some string
// some "other string"
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么:

two = two.replace("/^[\"\'])|([\"\']$/g", "");

以下是可行的,但必须有一个更优雅的方式来实现这一点..

if ((one != null && one.length() > 1) && ((one.startsWith("\"") && one.endsWith("\"")) || 
                (one.startsWith("\'") && one.endsWith("\'")))) {
            one = one.substring(1, one.length() - 1);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新/澄清

我的用例是应用程序的命令行界面,用户也可以将文件/路径拖入,而不是键入它们.

在Windows下,拖动的文件被双引号包围,在Linux下用单引号.我想做的就是摆脱它们.所以在我的用例中,引号总是对称的(它们匹配).

但是我可以完美地使用一种解决方案,即使它们不匹配也会剥离它们,因为它们总是这样做

java regex string

-2
推荐指数
1
解决办法
4220
查看次数

标签 统计

java ×2

debian ×1

linux ×1

openjdk-11 ×1

regex ×1

string ×1