2

実行中の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();
    }
}
4

1 に答える 1

5

私が理解しているように、渡す各パラメーターは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"};
于 2013-03-02T20:53:12.580 に答える