hak*_*ata 5 java windows cmd exec runtime.exec
我有一个程序,我可以从我的代码成功执行cmd命令,但我希望能够从cmd命令获取输出.我怎样才能做到这一点?
到目前为止我的代码是:
Second.java:
public class Second {
public static void main(String[] args) {
System.out.println("Hello world from Second.java");
}
}
Run Code Online (Sandbox Code Playgroud)
和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");
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过检查Second.class检查第一个命令是否成功,但是如果这个类生成了一些错误,我怎么能看到那个错误?
你需要你的Process的OutputStream(InputStream)(你应该使用ProcessBuilder)......就像这样
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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14231 次 |
| 最近记录: |