2012-10-15 37 views
7

私はRuntime.getrunTimeを使用して別のJavaプログラムからJavaプログラムを実行しようとしていますが()execしないにjava.io.IOException:エラー= 2、そのようなファイルやディレクトリ

コード:

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) 

誰も私が問題を解決するために助けることができます。ディレクトリを設定するのではなく、-cpを使って個々のjarファイルを追加する必要があります。

答えて

2

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

+0

String []コマンド= {"" + java_home + "/ bin/java -cp/sc/sug/p-lib/* Tdesigner"、 "-cd"、 "/ pr"、 "-in"、 "ing .rsp "、" -out "、" /scratch/sug/ng.pla "、" - ad "、" -stopO "};コマンドを修正しても同じエラーが発生する: – user1731553

+1

まだTCSignerが1つの文字列としてjava -cp /sc/.../*を持っている場合、それを分離する必要があります。そうでなければjavaを呼び出して引数を渡します。 cpなど、* java -cp/sc /と呼ばれるプログラムを実行しようとしています。 –

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" }; 
0

私はスカラ座を使用しています。ここに私のコードです:

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

私はJavaを使用する他の人には分かりやすいと思います。

関連する問題