Java Runtime.getRuntime().exec 不执行

在linux服务器上用java调用脚本,直接写
Java Runtime.getRuntime().exec(“要执行的命令”)有时候发现并不能执行响应的命令。

原因

1.这是因为linux执行命令需要使用linux系统自带的sh工具,而java虚拟机有时候并不能获取到系统的环境变量,导致命令无法被执行
2.还有可能就是异常太多导致异常栈满了,生产者满了无人消费,程序便阻塞了

解决方法

在命令前加上

/bin/sh -c 

表示调用系统/bin目录下的sh工具

如果你用的是字符串传递命令,可以这么写

String [] cmd={"/bin/sh","-c","chmod 755 ./do*"};
Runtime.getRuntime().exec(cmd);

获取异常信息和正常输出信息

Runtime.getRuntime().exec(run).getErrorStream();
Runtime.getRuntime().exec(run).getInputStream();
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐