Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从另一个java程序调用java程序?_Java - Fatal编程技术网

如何从另一个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”的方法中。向我们展示您的代码工作。检查链接