hi,all我要在linux下运行java程序,但是需要在java里用runtime执行一个可执行文件,runtime.exec(这里包括多个linux环境变量的设置,以及一个可执行文件abc.exe 后面带这个可执行文件的多个参数),由于里面有空格,每次运行都报错,只执行第一个空格前面的命令,试了好多方法,都报错,大家谁有办法帮帮我啊,感激不尽语句大概如下:
Process p = r.exec(PATH=${PATH}:/home/bin NLS_LANG=AMERICAN_AMERICA.US8PC437 fcmp_batch.sh module=/home/data/addonBinary/package/AAF120.pll BATCH=yes module_type=Library LOGON=NO script=yes debug=yes Window_State=minimize);这个命令我直接在linux 下是能运行成功的,runtime就不行

解决方案 »

  1.   

     使用 ProcessBuilder ,不要使用Runtime
      

  2.   

    我试过ProcessBuilder,但是环境变量还是设置不好,因为我后面的命令fcmp_batch.sh必须在环境变量设置好了以后才能用,求解
      

  3.   

    ProcessBuilder pb = ...;
    Map<String, String> env = pb.environment();
    env.put("Path", env.get("Path") + ";.............");        // windows 下 不是PATH是Path,一开始使用PATH返回了nullProcess p = pb.start(); 
      

  4.   

    谢谢逸飞的回答,我知道是什么原因了,因为我是在linux上运行的,直接在linux窗口下运行的命令,在程序里需要先指定shell,小女不才,linux shell编程没有领悟好,非常感谢你的热心帮助,谢谢,谢谢