2012-10-05 80 views

回答

6

首先编译你的代码。我不认为你真的想要按照你写的从A类编译B类。这几乎没有任何意义。

现在,既然都是java类,你可以直接调用另一个类的方法。但是,如果您的确实是表示2个类别是独立程序,以便每个程序都有自己的主要方法,则可以使用Runtime.getRuntime().exec(...)或使用ProcessBuilder运行另一个应用程序。

请注意字数真的我写了。我很肯定你不想从另一个Java程序中调用。大多数机会是你想从另一个类调用一个类的方法,所以这样做。

0

@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); 
      } 
     } 
    }