如何从另一个java程序调用java程序?
可能重复:如何从另一个java程序调用java程序?,java,Java,可能重复: 例如,如果我有A.java和B.java,那么我想用A.java编译并运行B.java。首先,编译代码。我不认为您真的希望像您所写的那样从类A编译类B。这几乎没有任何意义 现在,由于这两个类都是java类,所以您可以直接从一个类调用另一个类的方法。然而,如果您的意思是两个类是独立的程序,因此每个类都有自己的主方法,那么您可以使用Runtime.getRuntime.exec从另一个应用程序运行一个应用程序。。。或者使用ProcessBuilder 请注意我写的字。我很确定您不想从一
例如,如果我有A.java和B.java,那么我想用A.java编译并运行B.java。首先,编译代码。我不认为您真的希望像您所写的那样从类A编译类B。这几乎没有任何意义 现在,由于这两个类都是java类,所以您可以直接从一个类调用另一个类的方法。然而,如果您的意思是两个类是独立的程序,因此每个类都有自己的主方法,那么您可以使用Runtime.getRuntime.exec从另一个应用程序运行一个应用程序。。。或者使用ProcessBuilder
请注意我写的字。我很确定您不想从一个java程序调用另一个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”的方法中。向我们展示您的代码工作。检查链接