Java ProcessBuilder 在 Linux 中执行 git 时返回退出错误 128(一些 git 命令工作正常)

标签 java linux git processbuilder

我尝试使用 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/

相关文章:

java - 时间和空间的复杂性

Java 相当于 Python 的切片

java - Docx4j 从一个 .docx 导出样式并在另一个 .docx 中使用它

linux - 连接到主机 localhost 端口 22 : Connection refused

linux - 用新行替换逗号但保留第一列

git - 如果我将更改存储在一个分支中然后删除该分支会发生什么

java - 模拟 mongo 查询

linux - 用 bash 脚本中的 sed 替换另一个文件中的字符串

未列出 Git 远程分支

windows - 适用于 Windows 的 Git 无法正确处理网络目录