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?
In the command, change "YOUR-COMMAND" with your command and "c:\PATH\TO\FOLDER\OUTPUT. txt" with the path and file name to store the output. In the command, change "YOUR-COMMAND" with your command and "c:\PATH\TO\FOLDER\OUTPUT. txt" with the path and filename to store and view the output.
We must follow the steps given below to run a Java program. Open the notepad and write a Java program into it. Save the Java program by using the class name followed by .java extension. Open the CMD, type the commands and run the Java program.
You need to the OutputStream (InputStream) of your Process (and you should use a ProcessBuilder)... like so
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;
try {
// Use a ProcessBuilder
ProcessBuilder pb = new ProcessBuilder(cmd1);
Process p = pb.start();
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
int r = p.waitFor(); // Let the process finish.
if (r == 0) { // No error
// run cmd2.
}
} catch (Exception e) {
e.printStackTrace();
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With