我目前正在开发一个应该执行一些控制台命令的程序。我的代码如下所示: 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,没有这样的文件或目录”,但是当我在控制台中手动输入命令时,它起作用了。我做错了什么?提前致谢!
2 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
经过一些尝试,我找到了一个可行的解决方案
String result
String line;
Process process = Runtime.getRuntime().exec(command);
Reader r = new InputStreamReader(process.getInputStream());
BufferedReader in = new BufferedReader(r);
while ((line = in.readLine()) != null)
result += line;
in.close();
喵喔喔
TA贡献1735条经验 获得超5个赞
svn
如果您的应用程序未携带环境变量,则对 jvm 没有任何意义。
尝试使用完整路径执行命令:
String[] command = { "/bin/dir1/dir2/svn auth --show-passwords" };
如果您不知道程序在哪里,请使用以下命令找出它:
which svn
添加回答
举报
0/150
提交
取消