【发布时间】:2016-11-09 09:01:18
【问题描述】:
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
public class TestUnZip {
public static void main(String[] args) throws IOException, InterruptedException{
String destFolder="E:\\TestScript";
/*
* Location where the Nodejs Project is Present
*/
System.out.println(destFolder);
String cmdPrompt="cmd";
String path="/c";
String npmUpdate="npm update";
String npm="npm";
String update="update";
File jsFile=new File(destFolder);
List<String> updateCommand=new ArrayList<String>();
updateCommand.add(cmdPrompt);
updateCommand.add(path);
updateCommand.add(npmUpdate);
runExecution(updateCommand,jsFile);
}
public static void runExecution(List<String> command, File navigatePath) throws IOException, InterruptedException{
System.out.println(command);
ProcessBuilder executeProcess=new ProcessBuilder(command);
executeProcess.directory(navigatePath);
Process resultExecution=executeProcess.start();
BufferedReader br=new BufferedReader(new InputStreamReader(resultExecution.getInputStream()));
StringBuffer sb=new StringBuffer();
String line;
while((line=br.readLine())!=null){
sb.append(line+System.getProperty("line.separator"));
}
br.close();
int resultStatust=resultExecution.waitFor();
System.out.println("Result of Execution"+(resultStatust==0?"\tSuccess":"\tFailure"));
}
}
上面的程序运行良好,但是这个程序依赖于 Windows 机器,我想在其他机器上运行相同的程序。
1) NPM 是一个命令,作为NodeJS 的捆绑包提供。 (我将 NodeJS 作为服务运行,我已经定义了环境变量,所以我可以从任何文件夹运行 npm update 命令)
2) 如果不使用 "cmd", "/c",我找不到运行 npm update 命令的解决方法。如果我这样做,我会收到以下错误
线程“main”java.io.IOException 中的异常:无法运行程序“npm update”(在目录“E:\TestScript”中):CreateProcess 错误=2,系统找不到指定的文件 在 java.lang.ProcessBuilder.start(未知来源)
3) 我们是否可以选择将 npm update 命令作为Node.exe 的参数运行。如果是这样,任何人都可以为我提供适当的解决方法。
4) 和我一样,我使用 mocha 框架运行测试脚本,结果生成 .xml 文件。
5) 我希望 mocha 命令也可以使用流程构建器来调用。
【问题讨论】:
标签: java node.js npm processbuilder