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

ProcessBuilder调用脚本执行

最近在搞一些topic,需要用到ProcessBuilder去执行shell脚本,结果一直失败,报错如下:

/bin/bash: wget: command not found

贴上原先代码:

 
            ProcessBuilder pb = new ProcessBuilder("/bin/bash","-c",command);
            pb.redirectErrorStream(true); // 合并错误流到标准输出流

            Process process = pb.start();

            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            StringBuilder sb = new StringBuilder();
            while ((line =reader.readLine()) != null) {
                sb.append(line);
            }

            int exitCode = process.waitFor();

以上代码执行后报错。

排查思路:

1./bin/bash有问题,终端执行命令:echo $SHELL

我的命令行输出如下:/bin/zsh,修改ProcessBuilder的入参改为”/bin/zsh“,继续执行,报错。

2.ProcessBuilder有问题?尝试debug,发现命令传入没问题,问题还是回到/bin/bash

3.wget已经安装了,再命令行执行脚本毫无问题,但是到ProcessBuilder就报错。最后解决办法如下:

在终端执行如下命令行: which wget https:xxx,执行后输出"/usr/local/bin/wget"

修改ProcessBuilder的入参为/usr/local/bin/wget

基础用法:Java ProcessBuilder|极客教程

  


http://www.kler.cn/a/386296.html

相关文章:

  • 使用 Vision 插件让 GitHub Copilot 识图问答
  • 网络基础Linux
  • web安全测试渗透案例知识点总结(上)——小白入狱
  • 论文翻译 | The Capacity for Moral Self-Correction in Large Language Models
  • C++单例模式与多例模式
  • [Linux] Linux信号捕捉
  • 简记Vue3(四)—— 路由
  • 代码随想录第二十五天
  • 减速机在工业机械中的核心作用!
  • 如何实现Delay_us和Delay_ms延时(SysTick定时器)
  • Flink安装和Flink CDC实现数据同步
  • 05 SQL炼金术:深入探索与实战优化
  • Docker平台搭建方法
  • CST案例分析:TLM算法仿真5G毫米波手机天线和整机
  • H.264/H.265播放器EasyPlayer.js无插件H5播放器关于WASM的压缩优化
  • 领略CSS Flex布局的精髓:打造响应式与创新设计
  • 基于开源 AI 智能名片 S2B2C 商城小程序的视频号交易小程序优化研究
  • 人脸识别发展现状及发展前景
  • 【微信小程序】基本语法
  • appium启动 install driver安装驱动
  • 前端入门一之JS对象、字符串对象、数组对象、Data()对象等
  • HTML CSS H5C3样式语句汇总20241105
  • SpringBoot健身房管理系统:敏捷开发实践
  • HTML 鼠标滑动 页面的header背景从透明色变为黑色
  • GitLab基于Drone搭建持续集成(CI/CD)
  • Vue前端开发:animate.css第三方动画库