使用java以编程方式传递SCM命令并尝试在eclipse控制台上获得结果
我尝试使用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
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};“?