//执行命令行指令Process process =Runtime.getRuntime().exec(arguments);//获取输出结果BufferedReader in =newBufferedReader(newInputStreamReader(process.getInputStream(),"GBK"));
二、完整示例代码
java通过命令行调用yolov5的python代码
importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassTest{publicstaticvoidmain(String[] args){// String[] arguments = new String[]{"D:\\aMiniconda\\envs\\nlp\\python.exe", "E:\\pycharmProject\\nlp\\snownlp\\predict.py"};// String[] arguments = new String[]{"D:\\aMiniconda\\envs\\yolov5\\python.exe", "-c","E:\\pycharmProject\\yolov5\\detect.py"};StringBuffer command =newStringBuffer();
command.append("cmd /c E:");
command.append("&& cd E:\\pycharmProject\\yolov5");
command.append("&& conda activate yolov5");
command.append("&& python detect.py");String arguments=command.toString();System.out.println(arguments);try{Process process =Runtime.getRuntime().exec(arguments);BufferedReader in =newBufferedReader(newInputStreamReader(process.getInputStream(),"GBK"));String line =null;while((line = in.readLine())!=null){System.out.println(line);}
in.close();//java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,//返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反int re = process.waitFor();System.out.println("调用结果:");System.out.println(re);}catch(Exception e){
e.printStackTrace();}}}