日期:2014-05-18  浏览次数:20663 次

ubuntu下直接执行.sh文件正确,但通过java调用sh,无法执行?
ubuntu下的可执行程序,希望通过java调用实现局域网的共享。由于该程序必须在指定的安装目录下运行,虽然在/etc/profile里面添加了path,但是它很多配置文件还是要去自己的安装目录下找。

我的想法是在该程序的安装目录下(假设是/usr/share/decode),建一个test.sh文件,内容如下:

cd /usr/share/decode/bin
Deco -input /usr/share/decode/input.file -out /usr/share/decode/output.file  

然后java调用test.sh启动该程序(假设是Deco)。经测试在终端命令行任何目录下执行test.sh都正常,但java执行没有任何反应,也不报错:
 Runtime rt = Runtime.getRuntime();
               rt.exec(“sh /usr/share/decode/test.sh”);

我查看后台进程,java执行后该程序根本没有启动,也没有报错。

请问大家,如何解决上述问题?java启动这个特定目录下的进程,还有别的好方法吗?只要能做到局域网其余用户可执行即可,初学者,请大家再次详细指教!感激不尽!

------解决方案--------------------
可能是没权限!你这样试试:
String chmod = "chmod 777 /usr/share/decode/test.sh";
Process proc = Runtime.getRuntime().exec(chmod);
proc.waitFor();
Runtime.getRuntime().exec("/usr/share/decode/test.sh").waitFor();
------解决方案--------------------
ubuntu 执行脚本得 sudo ./xxx.sh吧,貌似还得输入密码。
------解决方案--------------------
没权限啊
建议
String[] cmd = {"root","/usr/share/decode/test.sh"};
Runtime rt = Runtime.getRuntime();
rt.exec(cmd);