I have a program where I was able to successfully execute cmd commands from my code, but I want to be able to get the output from the cmd command. How can I do that?
So far my code is:
Second.java:
public class Second {
public static void main(String[] args) {
System.out.println("Hello world from Second.java");
}
}
and Main.java
public class Main {
public static void main(String[] args) {
String filename = args[1].substring(0, args[1].length() - 5);
String cmd1 = "javac " + args[1];
String cmd2 = "java " + filename;
Runtime r = Runtime.getRuntime();
Process p = r.exec(cmd1); // i can verify this by being able to see Second.class and running it successfully
p = r.exec(cmd2); // i need to see this output to see if
System.out.println("Done");
}
}
I can check the first command is working successfully by checking for Second.class, but what if this class generated some error, how will I be able to see that error?
You need to the OutputStream (InputStream) of your Process (and you should use a ProcessBuilder)... like so
look here: Extracting a process's exit code in the case of ThreadInterrupted
You need to get the return code... you must wait for it.
A general example to get the return from a command would be: