【发布时间】:2013-03-02 20:12:35
【问题描述】:
我正在尝试在正在运行的 java 程序中运行 jmol 的 jar。这就是我在命令行中运行它的方式,它运行良好。
$ java -jar Jmol.jar 1644_____.pdb -o -J "measure 3 4;measure 1 2"
我正在使用 ProcessBuilder,它正确调用了 jar 文件和第一个参数,但没有正确调用其余参数。我错过了什么?
import java.io.IOException;
class test{
public static void main(String [] ar) throws Exception{
run();
}
public static void run() throws IOException, InterruptedException{
String INPUTPDB = "1644_____.pdb";
String args[] = {"java", "-jar", "Jmol.jar", INPUTPDB, "-o", "-J", "\"measure 3 4;measure1 2\""};
ProcessBuilder pb = new ProcessBuilder(args);
//Runtime.getRuntime().exec(args);
Process p = pb.start();
p.waitFor();
}
}
【问题讨论】:
-
[不知道这个问题,可能是参数排序,可能是 exec(new String[] {"...."})](stackoverflow.com/a/6164084/714968)
-
您似乎没有处理 InputStream、OutputStream 和错误 InputStream。尤其是错误流可能会向您显示重要的错误消息。此外,如果您不处理这些流,您可能会填满操作系统缓冲区,导致您的进程无法运行。
-
我会更新代码来处理这个
-
我可能是错的,但我很确定您不需要“引用”参数组,例如 ` "\"measure 3 4;measure1 2\""
,"measure 3 4;measure1 2"` 应该没问题 -
@MadProgrammer 就是这样。我怎样才能接受你的回答?
标签: java processbuilder