当前位置: 首页 > news >正文

commons-exec

概述

用于执行外部命令和进程的Java库。它提供了一种简单而灵活的方式来启动、监控和终止外部进程,并处理它们的输入和输出。

maven依赖

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-exec --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-exec</artifactId><version>1.5.0</version></dependency>

示例

        String command = "ping localhost";ByteArrayOutputStream susStream = new ByteArrayOutputStream();//接收正常结果流ByteArrayOutputStream errStream = new ByteArrayOutputStream(); //接收异常结果流CommandLine commandLine = CommandLine.parse(command);DefaultExecutor exec = new DefaultExecutor();PumpStreamHandler streamHandler = new PumpStreamHandler(susStream, errStream);exec.setStreamHandler(streamHandler);int code = exec.execute(commandLine);System.out.println("退出代码: " + code);System.out.println(susStream.toString("GBK"));System.out.println(errStream.toString("GBK"));

常用API

CommandLine 命令行对象

方法描述
parse(String line)
parse(String line, Map<String, ?> substitutionMap)
静态方法,解析命令行
CommandLine(CommandLine other)
CommandLine(File executable)
CommandLine(Path executable)
CommandLine(String executable)
构造方法
addArgument(String argument)
addArgument(String argument, boolean handleQuoting)
添加一个参数
addArguments(String addArguments)
addArguments(String addArguments, boolean handleQuoting)
addArguments(String[] addArguments)
addArguments(String[] addArguments, boolean handleQuoting)
添加多个参数
getArguments()获取参数
getExecutable()获取可执行的命令字符串
isFile()判断是否是可执行文件
getSubstitutionMap()
setSubstitutionMap(Map<String, ?> substitutionMap)
设置替换映射,用于替换参数中的变量:${变量}

执行器

  • DefaultExecutor
方法描述
builder()静态方法,获取构造器
execute(CommandLine command)
execute(CommandLine command, ExecuteResultHandler handler)
execute(CommandLine command, Map<String, String> environment)
execute(CommandLine command, Map<String, String> environment, ExecuteResultHandler handler)
执行命令行
getProcessDestroyer()
setProcessDestroyer(ProcessDestroyer processDestroyer)
获取或设置进程清理操作器
getStreamHandler()
setStreamHandler(ExecuteStreamHandler streamHandler)
获取或设置执行结果流处理器
getWatchdog()
setWatchdog(ExecuteWatchdog watchdog)
获取或设置执行监控对象
getWorkingDirectory()获取工作目录
isFailure(int exitValue)通过执行结果码判断命令行是否执行成功
setExitValue(int value)设置进程退出值
setExitValues(int[] values)设置进程退出值
  • DefaultExecutor.Builder
方法描述
get()获取DefaultExecutor对象
setExecuteStreamHandler(ExecuteStreamHandler executeStreamHandler)设置执行结果流处理器
setThreadFactory(ThreadFactory threadFactory)设置线程工厂
setWorkingDirectory(File workingDirectory)
setWorkingDirectory(Path workingDirectory)
设置工作目录
  • DaemonExecutor DefaultExecutor的子类,用于异步执行,方法同DefaultExecutor一致

结果流处理

  • PumpStreamHandler
方法描述
PumpStreamHandler()
PumpStreamHandler(OutputStream allOutputStream)
PumpStreamHandler(OutputStream outputStream, OutputStream errorOutputStream)
PumpStreamHandler(OutputStream outputStream, OutputStream errorOutputStream, InputStream inputStream)
构造方法
setProcessErrorStream(InputStream is)进程错误流
setProcessInputStream(OutputStream os)进程输出流
setProcessOutputStream(InputStream is)进程输入流
setStopTimeout(Duration timeout)超时时间
start()开始
stop()结束

监控对象

  • Watchdog
方法描述
builder()获取构造器
addTimeoutObserver(TimeoutObserver to)
removeTimeoutObserver(TimeoutObserver to)
run()
start()
stop()
  • Watchdog.Builder
方法描述
get()获取Watchdog对象
setThreadFactory(ThreadFactory threadFactory)设置线程工厂
setTimeout(Duration timeout)设置超时时间
http://www.dtcms.com/a/410832.html

相关文章:

  • 网页.网站.主页.网址.域名有什么联系深圳网站优化教程
  • 【LeetCode】51. N 皇后
  • 网站建设 上海浦东网络信息安全网站开发教程
  • 湖州网站建设2023设计院裁员惨烈程度
  • 论文《Inference for Iterated GMM Under Misspecification》的例子2
  • 5G RedCap模组应用领域分析
  • git 切换合并分支操作
  • 免费行情网站在线wix网站建设
  • Docker部署Nexus Repository Community Edition
  • 石材企业网站推广方式图片
  • DOM清除、缓存清除、数据库删除
  • 网站建设整改报告企业门户网站的设计 流程图
  • 东莞专业做网站看守所加强自身网站建设工作总结
  • 大模型的安全治理与技术发展
  • Carboxyrhodamine 110 LC Acid在蛋白质标记领域的应用
  • JAVA解题——求百米自由落下的10次反弹高度与所有路程距离(附源代码)
  • 【JS】JS基础-对象处理方法整合
  • 代码随想录算法训练营第五十二天|101.孤岛的总面积 102.沉没孤岛 103.水流问题 104.建造最大岛屿
  • 韩国优秀平面设计网站网站网址怎么写
  • 南通移动网站建设网站收录很少却有排名
  • Redis04-集群知识
  • 烟台网站制作设计如何给网站添加搜索关键字
  • AUTOSAR 状态管理(SWS_StateManagement.pdf)核心概念解析
  • AI 重构实体经济:2025 年传统产业智能化转型实践
  • 从“硬件能力比拼”到“生活价值交付”,方太智慧厨房重构行业竞争内核
  • 本地的赣州网站建设深圳做网站排名哪家专业
  • 专业建站推广网络公司网站在线留言如何做
  • commons-codec
  • Python 爬虫 HTTPS 实战,requests httpx aiohttp 抓取技巧、证书问题与抓包调试全流程
  • 网站建设小江网页设计工作室主题网站