【发布时间】:2019-07-22 11:10:41
【问题描述】:
我目前正在开发一个应该执行一些控制台命令的程序。
我的代码如下所示:
private String executeCommands(String[] commands)
{
String result = "";
try
{
ProcessBuilder pb = new ProcessBuilder();
String s = null;
Charset charset = Charset.forName("IBM850");
BufferedReader stdInput;
Process proc;
for (String command : commands)
{
System.out.println("Ausfuehrung von: " + command);
pb.command(command);
proc = pb.start();
stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream(), charset));
while ((s = stdInput.readLine()) != null)
{
result += s;
}
System.out.println();
}
}
catch (Exception ex)
{
result = ex.getMessage();
}
return result;
}
private void userLogIn(IUserInteraction userInteraction)
{
String[] command = { "svn auth --show-passwords" };
String result = executeCommands(command);
System.out.println(result);
}
输出是“无法运行程序“svn auth --show-passwords”:错误=2,没有这样的文件或目录”,但是当我在控制台中手动输入命令时,它可以工作。我做错了什么?
提前致谢!
【问题讨论】:
-
在您的代码中,您是否从正确的目录(与手动运行时相同的目录)运行命令?
-
是的,都来自 /home/user
-
你的环境变量列表中有svn吗?尝试在java代码中打印环境变量并检查是否存在。
-
@GurmeetGulati 当我运行 java.util.Map
env = System.getenv(); env 地图包含空值