使用java以编程方式传递SCM命令并尝试在eclipse控制台上获得结果

使用java以编程方式传递SCM命令并尝试在eclipse控制台上获得结果,java,eclipse,command-line,command-line-arguments,command-prompt,Java,Eclipse,Command Line,Command Line Arguments,Command Prompt,我尝试使用java以编程方式传递scm命令,并尝试在eclipse控制台上获取该命令的结果,但我无法执行该命令,以下是我遵循的方法: public SCMCommand(final String repositoryURI, final String userId, final String password, final String scmtoolspath, String streamName) { this.repositoryURI = repositoryUR

我尝试使用java以编程方式传递scm命令,并尝试在eclipse控制台上获取该命令的结果,但我无法执行该命令,以下是我遵循的方法:

public SCMCommand(final String repositoryURI, final String userId, final String password,
    final String scmtoolspath, String streamName) {
        this.repositoryURI = repositoryURI;
        this.userId = userId;
        this.password = password;
        this.scmtoolspath = scmtoolspath;
        this.streamName = streamName;
    }

    public void setCommand() throws IOException
    {
        String line;
        String tempPath1 = this.scmtoolspath + "\\scm";
        this.command = "cmd /c " + tempPath1 + " show operations -r " + this.repositoryURI + " -u "+           this.userId + " -P " + this.password + " " + this.streamName;
        System.out.println(this.command);
        ProcessBuilder processBuilder = new ProcessBuilder();

        // Run this on Windows, cmd, /c = terminate after this run
        processBuilder.command(this.command);

        try {
            Process process = processBuilder.start();

            // blocked :(
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            int exitCode = process.waitFor();
            System.out.println("\nExited with error code : " + exitCode);
        } 
        catch (IOException e) {
            e.printStackTrace();
        } 
        catch (InterruptedException e) {
            e.printStackTrace();
        }
    }   
}

谢谢你的帮助, 提前感谢

还可以输出我在控制台上获得的内容

java.io.IOException: Cannot run program "cmd /c C:\AB_TOOLS\ALMAddons\CodeReviewMetrics\libs\SCMTools\jazz\scmtools\eclipse\scm show operations -r ****8** -u **** -P **** streamName": CreateProcess error=2, The system cannot find the file specified
Build Result: All Streams Loaded Successfully
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at com.bosch.airbag.StreamHistory.SCMCommand.setCommand(SCMCommand.java:52)
    at com.bosch.airbag.StreamHistory.App.main(App.java:75)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
    at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 2 more
java.io.IOException:无法运行程序“cmd/c:\AB\u TOOLS\ALMAddons\CodeReviewMetrics\libs\SCMTools\jazz\SCMTools\eclipse\scm show operations-r****8**-u****-P****streamName”:CreateProcess error=2,系统找不到指定的文件
生成结果:成功加载所有流
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
在com.bosch.aibag.StreamHistory.SCMCommand.setCommand上(SCMCommand.java:52)
在com.bosch.aibag.StreamHistory.App.main上(App.java:75)
原因:java.io.IOException:CreateProcess error=2,系统找不到指定的文件
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl。(ProcessImpl.java:386)
在java.lang.ProcessImpl.start(ProcessImpl.java:137)
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 还有两个
重要注意事项 -文件的路径是正确的 -运行给定命令时,即“cmd/c:\AB\u TOOLS\ALMAddons\CodeReviewMetrics\libs\SCMTools\jazz\SCMTools\eclipse\scm show operations-r****8**-u****-P****streamName”
-它在命令提示符下运行正常,但在EclipseIDE上运行不正常

请参阅图片attachedI无法看到它。请使用文本而不是图像:@vahdet好的,先生,现在我已经按照您的愿望进行了编辑。我认为您使用ProcessBuilder API的方式不对。请参阅:您需要以字符串数组(而不是单个字符串)的形式向命令传递命令和参数。@laborg您的意思是类似于“string[]cmd=new string[]{“cmd/c”、tempPath1、“show operation”、“-r”、this.repositoryURI、“-u”、this.userId、“-P”、this.password、”、this.streamName}?请参阅附件中的图像。我看不到它。请使用文本而不是图像:@vahdet好的,先生,现在我已经按照您的愿望进行了编辑。我认为您使用ProcessBuilder API的方式不对。请参阅:您需要以字符串数组(而不是单个字符串)的形式将命令和参数传递给命令。@laborg您的意思是这样的“string[]cmd=new string[]{“cmd/c”,tempPath1,“show operation”,“-r”,this.repositoryURI,“-u”,this.userId,“-P”,this.password,”,this.streamName};“?