Java执行Shell脚本异常No such file or directory

最近在做一个项目时,遇到一个问题,用Runtime.getRuntime().exec()方法执行Linux的一个Shell脚本时,报

Cannot run program "./script/setip.sh": java.io.IOException: error=2, No such file or directory]
java.io.IOException: Cannot run program "./script/setip.sh": java.io.IOException: error=2, No such file or directory

 

最终发现是这个shell脚本本身有问题,字符是windows格式(主要是换行符导致),用 vi 打开这个shell脚本就可以看到每一行后面有 ^M 的字符,把这个文件转到 Linux 格式就可以了,方法如下:

 

[root@localhost script]# dos2unix -o seip.sh
dos2unix: converting file seip.sh to UNIX format ...

Java执行外部命令报错:No such file or directory 深度解析与解决方案 Java应用开发中,进程间通信与系统调用是常见的需求,开发者常通过Runtime.exec()或ProcessBuilder来执行外部命令。其底层原理是Java虚拟机通过JNI接口,将命令字符串交由操作系统的进程创建系统调用(如fork/exec)处理。这一机制的核心技术价值在于实现了Java生态与原生系统能力的无缝集成,极大地扩展了应用的功能边界。然而,该过程高度依赖操作系统的环境,尤其是在解析可执行文件路径时,若目标程序不在系统PATH环境变量指定的目录中,或提供的绝对/相对路径有误,系统便会返回EN 阅读详情

相关推荐

从空调温控到信号降噪:一阶RC低通滤波器在Arduino和STM32上的C语言实现指南

本文详细介绍了如何在Arduino和STM32平台上使用C语言实现一阶RC低通滤波器,涵盖从基础理论到实际应用的完整流程。通过具体代码示例和优化技巧,帮助开发者有效处理传感器噪声、信号平滑等问题,提升嵌入式系统的信号处理能力。

weixin_30565199的博客 485

用ant打的war包含中文文件名乱码问题

     如果使用Ant脚本来打war,如果工程中包含中文文件名的文件,则打出来的war中这些文件文件名就会变成乱码,使用MyEclipse部署到tomcat采用压缩成war方式也会存在相同的问题。    到网上查了好久,终于找到了解决方案,在ant脚本的war标签加入 encoding="GBK"这个参数,再跑一遍脚本,果然好用,没有出现乱码了。    示例脚本: xxxx   

溪居 3861

Zoom AI 技术架构研究:联合式方法与多模态集成

通过 Zoom AI 开放平台,企业可以自定义 AI 模块 (如法律合规审查、客户反馈分析),扩展应用场景。这种开放平台策略使企业能够根据自身需求定制 AI 功能,满足特定业务需求。

shao.bing的专栏 1296

JAVA执行命令是命令错误_JAVA执行Linux命令报错Cannot run program error=2 , No such file or directory...

JAVA使用ProcessBuilder运行Linux命令报错: start failed:Cannot run program "xxx" (in directory "xx"): error=2, No such file or directory。网上找了各种资料都没解决,最后想起azkaban的源码里也是用的ProcessBuilder来执行shell命令,于是翻了一下代码,找到了解决方案...

weixin_36060465的博客 3733

明明路径都对,为什么会出现[Error 2] No such file or directory: ‘XXXXX’?——解决清单

明明路径都对,为什么会出现[Error 2] No such file or directory: ‘XXXXX’?——解决清单

prince0520的博客 1万+

java main 异常 shell_Java执行Shell脚本No such file or directory” (win->Linux)异常的可能原因...

用Runtime.getRuntime().exec()方法执行Linux的一个Shell脚本时,报Cannot run program "./script/abc.sh": java.io.IOException: error=2, No such file or directory] java.io.IOException: Cannot run program "./script/abc.s...

weixin_39992483的博客 273

(惨痛教训) java runtime().exec() 提示 No such file or directory

   最近花了三天解决了一个不是问题的问题,花三整整三天,可谓真是太惨痛了。    近期做呼叫中心的语音合成(TTS),使用了百度语音平台进行语音合成。百度语音合成出来的语音是MP3格    式。这里共遇到几个问题:   (1)百度语音平台导出来的语音格式是 mp3, 强制转成 wav 时,正常播放没有问题。但是通过 sox 做转换时          提示 RIFF heade...

yyxawe的专栏 5184

Java执行Shell脚本No such file or directory异常的可能原因

用Runtime.getRuntime().exec()方法执行Linux的一个Shell脚本时,报Cannot run program "./script/abc.sh": java.io.IOException: error=2, No such file or directory] java.io.IOException: Cannot run program "./script/abc.sh": java.io.IOException: error=2, No such file or dir

zlpdaisy的专栏 2万+

java main 异常 shell,Java执行Shell脚本No such file or directory异常的可能原因

用Runtime.getRuntime().exec()方法执行Linux的一个Shell脚本时,报Cannot run program "./script/abc.sh": java.io.IOException: error=2, No such file or directory]java.io.IOException: Cannot run program "./script/abc.sh...

weixin_29081163的博客 546

troubleshooting-执行导数shell脚本异常error=2, No such file or directory

Cannot run program "order_log.sh" (in directory "/data/yarn/nm/usercache/chenweidong/appcache/application_1536202736675_0048/container_1536202736675_0048_01_000001"): error=2, No such file or dir...

dianjun2454的博客 601

Linux异常:Starting Jenkins bash: /usr/bin/java: No such file or directory

命令来检查 SELinux 的状态,并通过调整 SELinux 策略或将其设置为宽容模式(permissive mode)来测试是否是 SELinux 导致的问题。如果 Jenkins 是通过某种自动化工具(如 Ansible、Chef 或 Puppet)安装的,确保该工具的配置中包含了正确的 Java 路径。原本是一个指向正确 Java 版本的符号链接,但它已经丢失或损坏,你可以尝试重新创建它。变量(或 Jenkins 启动脚本中直接使用的 Java 路径)指向正确的 Java 安装目录

weixin_73060959的博客 959

ant执行shell脚本异常 No such file or directory

<project name="shell" default="execSH" basedir="."> <target name="execSH"> <exec executable="${basedir}/shenjie.sh" failonerror="true"> </exec&

轻轻草原 484

java中调用Linux命令显示 error=2, No such file or directory

问题描述: 在java中调用Linux命令: String cmd = "/sbin/route -n"; Runtime.getRuntime().exec(cmd); 命令本身没有问题,但是日志报错 : Cannot run program "/sbin/route -n": error=2, No such file or directory 问题排查: 1. 首先排除命令本身错误 2. 后来怀疑是否是命令受权限影响,后发现也不是权限问题 3. 最后查看源码,发现我调用的这个exec.

qq_23156283的博客 8956

java执行shell命令返回127 :No such file or directory

场景:需要在指定的远端机器执行某些shell命令 过程: java执行以下代码: Process process = Runtime.getRuntime().exec(realCommond); realCommond中的值为: ssh -p 22 -q admin@192.168.110.10"sh xxx.sh " 返回以下结果: bash: sh xxx.s...

m0_37691745的博客 7625

【Android 踩过的坑】4.java.io.IOException: Cannot run program “/system/xbin/su“: error=2, No such file...

【Android 踩过的坑】4. java.io.IOException: Cannot run program “/system/xbin/su”: error=2, No such file or directory 情况: Android 4.4系统正常跑,Android 8.0系统就报错了 Process su = Runtime.getRuntime().exec("/system/xbin/su"); 解决方法: Process su = Runtime.getRuntime().exec("

技术宅-Nopi的博客 1万+

记一次Runtime.getRuntime().exce(“command“)报错

使用commandadbshellgetproprp.build.version.release。解决方法command前面加上adb工具的绝对路径。工具idea,andriodstutdio。

m0_50565821的博客 1496

Linux 环境Runtime.getRuntime().exec()执行文件无权限

问题 最近项目使用了Runtime.getRuntime().exec()方法,这个方法返回的返回值的含义如下。 在使用过程中,发现直接exec(cmd)执行scp命令没问题,但是执行ssh命令时报错 比如 scp local remote,scp remote local都成功。 ssh root@ip "cp a1 a2" 报错 解决办法 String[] cmds ={"/bin/sh"."-c",cmd}; Runtime.getRuntime().exec(cmds); 原因 这

kimichen123的专栏 8447

java shell 错误_java 执行shell命令出错

import java.io.IOException;public class jarInfo {public static void main(String[] args){System.out.println("java execute linux shell command:");Process p = null;String fpath = "";String tpath = "/home...

weixin_33724434的博客 753

failed to run command ‘java‘: No such file or directory

一、报错场景 nohup java -jar xxx.jar 2>&1 & 运行上述命令后报错“failed to run command ‘java’: No such file or directory”,且执行 java -version、javac 正常,查看/etc/profile中配置正常。 二、解决方法 vim ~/.bashrc #最后面添加 export JAVA_HOME=/home/soft/jdk1.8.0_261 export JRE_HOME=${.

weixin_43135696的博客 8910

STC51单片机22-4*4*4 Led Cube设计完整代码

STC51单片机22——4*4*4 Led Cube设计完整代码https://blog.csdn.net/fengyuzhe13/article/details/127829060

上一篇: Java执行Shell脚本超时控制
下一篇: 内存数据库H2的Clustering模式数据操作测试 (2)
lee79
博客等级 码龄24年 2粉丝 52原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值