代码如下(在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 +要渲染的文件,感觉参数传不进去,请教高手!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
首先在前面说下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 +要渲染的文件,感觉参数传不进去,请教高手!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
"/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"
}
然后把
pbrt /usr/local/pbrt-1.02/scense/simple.pbrt
写到sh文件里
java直接执行这个sh文件就行了
Process process = Runtime.getRuntime().exec (test.sh);
是不是line = input.readLine ()这句