tôi đã sửa đổi mã để bao gồm một số kiểm tra:
public class Laj {
private static void printLines(String name, InputStream ins) throws Exception {
String line = null;
BufferedReader in = new BufferedReader(
new InputStreamReader(ins));
while ((line = in.readLine()) != null) {
System.out.println(name + " " + line);
}
}
private static void runProcess(String command) throws Exception {
Process pro = Runtime.getRuntime().exec(command);
printLines(command + " stdout:", pro.getInputStream());
printLines(command + " stderr:", pro.getErrorStream());
pro.waitFor();
System.out.println(command + " exitValue() " + pro.exitValue());
}
public static void main(String[] args) {
try {
runProcess("javac Main.java");
runProcess("java Main");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Đây là Main.java:
public class Main {
public static void main(String[] args) {
System.out.println("ok");
}
}
Khi mọi thứ đều tốt, nó chỉ hoạt động:
[email protected]:~/tmp$ java Laj
javac Main.java exitValue() 0
java Main stdout: ok
java Main exitValue() 0
Ví dụ: nếu tôi gặp lỗi trong Main.java:
[email protected]:~/tmp$ java Laj
javac Main.java stderr: Main.java:3: package Systems does not exist
javac Main.java stderr: Systems.out.println("ok");
javac Main.java stderr: ^
javac Main.java stderr: 1 error
javac Main.java exitValue() 1
java Main stdout: ok
java Main exitValue() 0
Nó vẫn in "ok" vì Main.class được biên dịch trước đó vẫn còn đó, nhưng ít nhất bạn có thể thấy chính xác những gì đang xảy ra khi các tiến trình của bạn đang chạy.
Nguồn
2011-01-30 13:05:08
Dường như bạn đang tìm kiếm http://docs.codehaus.org/display/JANINO/Trang chủ;). – phihag
@phihag nó chỉ là ví dụ về mã java. Tôi sẽ khái quát nó với mã c/C++ và ohters –
Bạn không phải sử dụng 'Process.getOutputStream'? –