可能重复:
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 –