8

Runtime.getrunTime().exec を使用して別の Java プログラムから Java プログラムを実行しようとしています。

コード :

String java_home = System.getenv("JAVA_HOME");
 String[] command = {""+java_home+"/bin/java -cp -cp /sc/sug/p-lib/*  Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopO "};
                try {
                    proc = Runtime.getRuntime().exec(command);
                    proc.waitFor();
                    int exitCode = proc.exitValue();
                } catch (IOException e) {
                        e.printStackTrace();
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }

次のエラーが表示されます。

 java.io.IOException: Cannot run program "/net/sl/sc/jdk6/bin/java -cp /sc/sug/p-lib/*  Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopOnError ": java.io.IOException: error=2, No such file or directory
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
            at java.lang.Runtime.exec(Runtime.java:593)
            at java.lang.Runtime.exec(Runtime.java:466)

誰でも問題を解決するのを手伝ってくれますか? ディレクトリを設定するのではなく、個々のjarファイルを-cpで追加する必要があるということですか。

4

3 に答える 3

3

コマンド文字列配列から余分なものを削除して-cp、配列内の個々のトークンを使用してみてください。

String[] command = { java_home + "/bin/java", "-cp",
   "/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp",
   "-out", "/scratch/sug/ng.pla", "-ad", "-stopO" };
于 2012-10-15T22:17:22.563 に答える
2

exec(String[]) を使用する場合、コマンドとその引数を別々の配列要素で提供する必要があります。

于 2012-10-15T22:02:48.243 に答える
0

スカラを使っています。これが私のコードです:

Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor()

Javaを使っている人には分かりやすいと思います。

于 2014-06-17T18:58:50.850 に答える