从 Java 应用程序执行脚本时未找到 xdotool

从 Java 应用程序执行脚本时未找到 xdotool

我正在尝试sh使用 Java 应用程序执行脚本ProcessBuilder。脚本检查浏览器文件上传窗口,然后选择它,然后提供新图像并提交。使用脚本自动执行浏览器的文件上传窗口。

当我尝试从终端执行脚本时,一切都正常。

但是当我使用 Java 应用程序执行相同的脚本时ProcessBuilder,我得到的是/usr/bin/xdotool: No such file or directory。我尝试了不同的方法,在同一个脚本中添加"/usr/bin/"path使用绝对路径,还尝试通过从 Java 调用另一个脚本来运行脚本,然后从该脚本调用实际脚本。我想现在我遇到了瓶颈。不知何故,从 Java,我无法访问 bash shell 的所有功能。

测试文件

#!/bin/bash
file="/home/ankit/workspace/test.jpg"
browser="chrome"
win_name="Open File"
echo "Looking for the window of the '$browser' browser with name '$win_name'"
WIN=$(for pid in $(/usr/bin/xdotool search --class "$browser"); do if [[ $(/usr/bin/xdotool getwindowname $pid) == "$win_name" ]]; then echo $pid; fi; done)
/usr/bin/xdotool windowactivate $WIN
/usr/bin/xdotool type "$file"
/usr/bin/xdotool key alt+o

Java 方法

private void selectImageFromFileUploadDialog() throws IOException, InterruptedException {
            try {
                ProcessBuilder pb = new ProcessBuilder("/bin/bash", "/home/ankit/workspace/resource/handle_file_dialog/run.sh");
                pb.inheritIO();
                Process process = pb.start();
                process.waitFor();
            } catch(Exception e) {
                e.printStackTrace();
            }
}

更新-1: 我检查了 bash 模式,两者都不是。不确定这是否有帮助

if [[ -o emacs ]]; then
  echo emacs mode
elif [[ -o vi ]]; then
  echo vi mode
else
  echo neither
fi

相关内容