可能重複:
how to compile & run java program in another java program?如何從另一個java程序調用java程序?
例如,如果我有A.java和B.java然後我想編譯和使用A.java運行B.java。
可能重複:
how to compile & run java program in another java program?如何從另一個java程序調用java程序?
例如,如果我有A.java和B.java然後我想編譯和使用A.java運行B.java。
首先編譯你的代碼。我不認爲你真的想要按照你寫的從A類編譯B類。這幾乎沒有任何意義。
現在,既然都是java類,你可以直接調用另一個類的方法。但是,如果您的確實是表示2個類別是獨立程序,以便每個程序都有自己的主要方法,則可以使用Runtime.getRuntime().exec(...)
或使用ProcessBuilder
運行另一個應用程序。
請注意字數真的我寫了。我很肯定你不想從另一個Java程序中調用。大多數機會是你想從另一個類調用一個類的方法,所以這樣做。
@AlexR:IMO這是一個有效的方案。假設您想從某處上傳代碼然後執行它,並驗證輸出。
嘗試使用下面提到的代碼:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class A {
public static void main(String[] args) {
try {
Process processCompile = Runtime.getRuntime().exec("javac B.java");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Process processRun = null;
try {
processRun = Runtime.getRuntime().exec("java B");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
printLines(" stdout:", processRun.getInputStream());
printLines(" stderr:", processRun.getErrorStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
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);
}
}
}
創建類型B'的'一個實例爲「A」型的方法。向我們展示您的代碼工作。 – adatapost
檢查鏈接http://stackoverflow.com/questions/4842684/how-to-compile-run-java-program-in-another-java-program –