2012-10-05 81 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); 
      } 
     } 
    }