Reputation: 1937
I am trying to run a java program from another java program using Runtime.getrunTime().exec
Code :
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();
}
It gives me following error:
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)
Can anyone help me to solve the issue. is it that i need to add individual jar files with -cp rather than setting the directory.
Upvotes: 8
Views: 23422
Reputation: 12965
I use scala. Here is my code:
Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor()
I think it is easy to understand for others who use java.
Upvotes: 0
Reputation: 159754
Try removing the extra -cp
from the command string array and use individual tokens in the array:
String[] command = { java_home + "/bin/java", "-cp",
"/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp",
"-out", "/scratch/sug/ng.pla", "-ad", "-stopO" };
Upvotes: 3
Reputation: 310883
If you use exec(String[]) you must provide the command and its arguments in separate array elements, not all in one as you have done.
Upvotes: 2