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启动这个特定目录下的进程,还有别的好方法吗?只要能做到局域网其余用户可执行即可,初学者,请大家再次详细指教!感激不尽! |
|
15分
#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(); |
10分
#2 |
ubuntu 执行脚本得 sudo ./xxx.sh吧,貌似还得输入密码。
|
15分
#3 |
没权限啊
建议 String[] cmd = {“root”,”/usr/share/decode/test.sh”}; Runtime rt = Runtime.getRuntime(); rt.exec(cmd); |