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启动这个特定目录下的进程,还有别的好方法吗?只要能做到局域网其余用户可执行即可,初学者,请大家再次详细指教!感激不尽!

解决方案 »

  1.   

    可能是没权限!你这样试试:
    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();
      

  2.   

    ubuntu 执行脚本得 sudo ./xxx.sh吧,貌似还得输入密码。
      

  3.   

    没权限啊
    建议
    String[] cmd = {"root","/usr/share/decode/test.sh"};
    Runtime rt = Runtime.getRuntime();
    rt.exec(cmd);