代码如下(在RedHat 9.0下运行)
首先在前面说下PBRT是一个渲染的应用,渲染命令为pbrt  *.pbrt,我这里在shell下能运行,现在想通过JAVA程序运行。
如果单独在shell 里面运行pbrt 它会出现一些提示信息,说明pbrt的作用等。使用下面方法:
try
{
 string str[]={"/bin/sh","-c","/usr/local/pbrt-1.02/bin/pbrt  /usr/local/pbrt-1.02/scense/simple.pbrt"}
 Process process = Runtime.getRuntime().exec (str);  InputStreamReader ir=newInputStreamReader(process.getInputStream());
 LineNumberReader input = new LineNumberReader (ir); String line;
 while ((line = input.readLine ()) != null){
  System.out.println(line)
}
catch (java.io.IOException e){
 System.err.println ("IOException " + e.getMessage());

结果:只提示pbrt的作用 没进行渲染,相当于只执行了pbrt,我也试过只用pbrt,不加参数,结果正确。我试过 其他命令 比如 ls -ll 命令,都正确,这里就是pbrt +要渲染的文件,感觉参数传不进去,请教高手!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    你可以考虑直接调用一个写好的sh, 参数写到sh文件里面看看!
      

  2.   

    我做了shell脚本的 就是pbrt这里过不去啊
      

  3.   

    string str[]={
    "/bin/sh",
    "-c",
    "/usr/local/pbrt-1.02/bin/pbrt  /usr/local/pbrt-1.02/scense/simple.pbrt"
    }
    是不是标记的行有问题
    需要再分开如
    string str[]={
    "/bin/sh",
    "-c",
    "/usr/local/pbrt-1.02/bin/pbrt",
    "/usr/local/pbrt-1.02/scense/simple.pbrt"

    }
      

  4.   

    应该把/usr/local/pbrt-1.02/bin加到path里
    然后把
    pbrt  /usr/local/pbrt-1.02/scense/simple.pbrt
    写到sh文件里
    java直接执行这个sh文件就行了
    Process process = Runtime.getRuntime().exec (test.sh);
      

  5.   

    参数也写在shell里,java直接调shell就好
      

  6.   

    我写了shell的脚本,比你这个还复杂,里面其他的都过去了,就pbrt simple.pbrt这里出不了结果, 这里参数感觉传不过去哦 
      

  7.   

    我试试 不过如果 直接命令都过不去  shell 估计也不行啊
      

  8.   

    你这个debug是到那句停了
    是不是line = input.readLine ()这句
      

  9.   

    如果单独在shell 里面运行pbrt 它会出现一些提示信息。。把提示信息贴出来