2013-02-26 42 views
0

我有2個java程序。一個是可執行的jar,它會將hello world的值返回給控制檯。下面列出..我怎樣才能從另一個程序執行一個jar並在另一個程序中顯示結果?

public class MainClass { 


    public static void main(String[] args) { 
     helloWorldSubRoutine(); 

    } 

    public static void helloWorldSubRoutine() { 

     String helloWorld = "Hello there!"; 
      System.out.println(helloWorld); 

    } 

} 

另一個程序是一個簡單的jframe與標籤,我希望它顯示從另一個罐子返回或字符串。

這樣做最簡單的方法是什麼?

回答

1

你知道什麼是真正可怕的,當一個想法的作品第一次......你在想你做錯了什麼......

的基本思想是將執行新的JVM和讀取,輸出處理。爲此,您可以使用ProcessBuilder並直接執行java

這個例子將要求java在執行路徑工作。此外,罐正試圖運行是在dist目錄,您可能需要改變這一點;)

執行人

這將啓動Java,執行所需的jar文件和讀取響應。

public class RunJava { 

    public static void main(String[] args) { 
     ProcessBuilder pb = new ProcessBuilder("java", "-jar", "dist/RunJava.jar"); 
     pb.redirectErrorStream(); 
     try { 
      Process p = pb.start(); 
      InputStreamReader isr = new InputStreamReader(p.getInputStream()); 
      p.waitFor(); 
      isr.join(); 

      System.out.println("Process said [" + isr.getText() + "]"); 
     } catch (Exception exp) { 
      exp.printStackTrace(); 
     } 
    } 

    public static class InputStreamReader extends Thread { 

     private InputStream is; 
     private String text; 

     public InputStreamReader(InputStream is) { 
      this.is = is; 
      start(); 
     } 

     public String getText() { 
      return text; 
     } 

     @Override 
     public void run() { 
      StringBuilder sb = new StringBuilder(64); 
      int value = -1; 
      try { 
       while ((value = is.read()) != -1) { 
        sb.append((char)value); 
       } 
      } catch (IOException exp) { 
       exp.printStackTrace(); 
       sb.append(exp.getMessage()); 
      } 
      text = sb.toString(); 
     } 

    } 

} 

主要

這是被執行的「主」類(和它的結果我們閱讀...)

public class Main { 

    public static void main(String[] args) { 
     System.out.println("Hello from the other side!"); 
    } 

} 
0

您可以將jar添加到您的項目中,然後調用返回所需內容的方法。通過這種方式,您將jar視爲另一個不能實現的類。

請記住,這不會捕獲寫入控制檯的文本。

+0

這是一個好主意,但我需要它與項目完全分開,因爲外部資源可能會創建一個沒有源代碼的jar,並且需要我編寫的這個程序。 – user2113228 2013-02-26 23:25:16

相關問題