有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java运行时。getRuntime。带有长参数的exec(cmd)

我正在做一个命令行应用的前端。它有很长的一段时间,命令行与此类似:

public String liveShellCommand(){

  String cmd="command mode --parameter arg --parameter2 arg2 --parameter3 arg3";

  Runtime run = Runtime.getRuntime() ;
  Process pr ;
    try {
       log.progress("sending command: " +cmd);       
       pr = run.exec( cmd );
       pr.waitFor() ;

在我添加“模式”开关之前,一切似乎都正常。“模式”开关从命令行执行。我尝试了几种组合,将参数拆分为一个数组,该数组也不会执行。我认为这与“模式”前面没有a有关,它前面不能有a

我做错了什么

编辑:我忘了提到我所能看到的是:调试器停止在不可编译的源代码上。我使用的是netbeans,它似乎没有打印出堆栈跟踪。它在奔跑中停止。执行官(cmd)。java有什么问题吗

我能够使用ProcessBuilder来运行它,而不只是简单地失败

它解析“command”很好,但是当我添加“command mode”时

 java.io.IOException: Cannot run program "command mode": java.io.IOException: error=2, No such file or directory

所以我猜它无法解析


共 (1) 个答案

  1. # 1 楼答案

    使用ProcessBuilder并向其传递字符串[]

         String[] cmmm = {arg3,arg4,arg5, arg6,arg7 };
         ProcessBuilder pb = new ProcessBuilder(cmmm);
         pb.directory(new File(tDir));
         Process p = pb.start();