Jul*_*iaz 2 java processbuilder
我试图在正在运行的java程序中运行jmol的jar.这是我在命令行中运行它的方式,它运行正常.
$ java -jar Jmol.jar 1644_____.pdb -o -J "measure 3 4;measure 1 2"
Run Code Online (Sandbox Code Playgroud)
我正在使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,您传递给的每个参数都ProcessBuilder将作为单独的参数传递给进程.
这意味着当进程执行相同的操作时args[x],您的\"measure 3 4;measure1 2\"参数将看起来像"measure 3 4;measure1 2"进程(包括引号).
除非命令期望引号,否则不需要引用参数
相反,尝试类似的东西
String args[] = {"java", "-jar", "Jmol.jar", INPUTPDB, "-o", "-J", "measure 3 4;measure1 2"};
Run Code Online (Sandbox Code Playgroud)