import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ExecuteShellComand {
public static void main(String[] args) {
ExecuteShellComand obj = new ExecuteShellComand();
String className = "str.java";
String command = "javac " + className;
String output = obj.executeCommand(command);
System.out.println(output);// prints the output of the executed command
}
private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
}
我想從另一個Java類(ExecuteShellComand.java)編譯Java文件(str.java)。我想要做的是如果「str.java」編譯成功,那麼我想執行「java str」命令,但是如果編譯失敗,那麼應該打印適當的堆棧跟蹤或錯誤。我正在存儲棧跟蹤或output
變量中的錯誤。從另一個java類編譯java文件
但是,當我執行此代碼雖然「str.java」中有一些錯誤System.out.println(output)
不打印錯誤。
順便說一句,因爲Java 6中,JAVA提供了標準化的方式在運行時編譯的類。在這裏查看這篇文章:http://java-bytes.blogspot.de/2012/03/compile-java-files-at-runtime.html – rdllopes