猿问

Java 命令提示符命令抛出“没有这样的文件或目录”

我目前正在开发一个应该执行一些控制台命令的程序。


我的代码如下所示:


  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,没有这样的文件或目录”,但是当我在控制台中手动输入命令时,它起作用了。我做错了什么?


提前致谢!


暮色呼如
浏览 156回答 2
2回答

慕尼黑8549860

经过一些尝试,我找到了一个可行的解决方案String resultString 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();

喵喔喔

svn如果您的应用程序未携带环境变量,则对 jvm 没有任何意义。尝试使用完整路径执行命令:String[] command = { "/bin/dir1/dir2/svn auth --show-passwords" };如果您不知道程序在哪里,请使用以下命令找出它:which svn
随时随地看视频慕课网APP

相关分类

Java
我要回答