我尝试使用 java ProcessBuilder 执行简单的 git 命令,当我在 linux 中运行它并返回结果时,它可以正常工作。 这是命令:
git -C /home/mlxx log -1 "72xxxxxxxxe700d6bbe06" --pretty=format:"%s"
当我尝试在java中执行它时
ProcessBuilder pb = new ProcessBuilder()
.command("git","-C","/home/mlxx","log","1","72xxxxxxxxe700d6bbe06","--pretty=format:\"%s\"").directory("/bin/bash");
int exit = p.waitFor();返回 128 错误代码
现在根据这个链接: Start GitLog with Java Process Builder 面临同样的问题
我试过:
ProcessBuilder pb = new ProcessBuilder()
.command("/usr/bin","-c""git","-C","/home/mlxx","log","1","72xxxxxxxxe700d6bbe06","--pretty=format:\"%s\"")
int exit = p.waitFor();返回 1 个错误代码
这里有什么问题吗?
其他命令通过 java 在 linux 中工作得很好吗?
最佳答案
您正在指定 /bin/bash
作为进程的工作目录:
[...] .directory("/bin/bash");
这是一个可执行文件而不是一个有效的目录。
您可以完全不使用它,因为您已经指定了 git
应该使用其 -C
选项操作的目录。
关于Java ProcessBuilder 在 Linux 中执行 git 时返回退出错误 128(一些 git 命令工作正常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54678568/