利用java执行shell脚本
BPMN中存在由系统执行的脚本任务,shell脚本任务也是该系统任务脚本中的一种,利用的也是由java执行shell脚本。
代码中的ProcessBuilder类,为java.lang.ProcessBuilder。可以参考javaAPI或者博客https://blog.csdn.net/u013256816/article/details/54603910
当然,也可以用java.lang.Runtime类的exec()方法执行shell脚本。
1 package com.alphajuns; 2 3 import org.junit.Test; 4 5 import java.io.*; 6 import java.util.ArrayList; 7 import java.util.List; 8 9 public class CMDCommandTest { 10 11 @Test 12 public void run() throws IOException { 13 // 创建命令集合 14 List<String> commandList = new ArrayList<String>(); 15 commandList.add("cmd"); 16 commandList.add("/c"); // 执行结束后关闭 17 commandList.add("echo"); 18 commandList.add("hello"); 19 commandList.add("cmd"); 20 // ProcessBuilder是一个用于创建操作系统进程的类,它的start()方法用于启动一个进行 21 ProcessBuilder processBuilder = new ProcessBuilder(commandList); 22 // 启动进程 23 Process process = processBuilder.start(); 24 // 解析输出 25 String result = convertStreamToStr(process.getInputStream()); 26 System.out.println(result); 27 } 28 29 public String convertStreamToStr(InputStream is) throws IOException { 30 if (is != null) { 31 Writer writer = new StringWriter(); 32 char[] buffer = new char[1024]; 33 try { 34 Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 35 int n; 36 while ((n = reader.read(buffer)) != -1) { 37 writer.write(buffer, 0, n); 38 } 39 } catch (UnsupportedEncodingException e) { 40 e.printStackTrace(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } finally { 44 is.close(); 45 } 46 return writer.toString(); 47 } else { 48 return ""; 49 } 50 } 51 }
附上Junit测试结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!