运行的命令行参数需要一个一个的添加到list集合中,否则会报error=2, No such file or directory
public void runCli(String filePath,String binPath){
// 运行参数
List<String> params = new ArrayList<>(16);
params.add("sbom-tool");
params.add("generate");
params.add("-b");
params.add("result");
params.add("-bc");
params.add(filePath);
params.add("-ps");
params.add("hello");
ProcessBuilder pb = new ProcessBuilder(params);
pb.redirectErrorStream(true);
pb.directory(new File(binPath));
Process process = null;
try {
process = pb.start();
//分析过程中是否出错标识
boolean errorFlag = false;
try (InputStream inputStream = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("utf-8")));) {
String line = null;
// 读取进程输入流中的内容,直接进程启动完毕
while ((line = br.readLine()) != null) {
if(line.contains("error")||line.contains("Error")){
errorFlag=true;
}
if(errorFlag){
return ;
}
}
// 等待命令执行完成
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}