日期:2014-05-19  浏览次数:20758 次

Java调用linux的shell脚本不成功,解决得分
代码是这样写的
try {
String cmds="sh /usr/local/a.bat";  
Process child = Runtime.getRuntime().exec(cmds);
} catch (IOException e) {
e.printStackTrace();
}
a.bat文件是在linux下的一个批处理文件,里面两条语句,单独执行sh /usr/local/a.bat是没有问题的,运行正常,放在java项目里就不调用了,是不是哪里写的不对?谢谢

------解决方案--------------------
有什么异常吗
------解决方案--------------------
a.bat是XP下的运行程序
linux下的要XX.sh吧?
------解决方案--------------------
我觉得有以下可能:
1、/usr/local/a.bat文件没有被授予可执行权限,导致无法执行;
2、java未能识别sh命令,最好调用java.lang.Runtime.exec(String cmd, String[] envp)方法,将sh的上下文路径设置进去,估计就没有问题了。
------解决方案--------------------
纠正一下2楼的说法,实际上只要文件中的内容是linux命令或相应批处理命令,其文件名字只要符合linux文件命名规则,在被授予可执行权限后命名成什么都是可以执行的。
------解决方案--------------------
从代码上分析,应该是环境变量的问题
java找不到sh的执行路径
可以试试 String cmds="/bin/sh /usr/local/a.bat";