2014-10-28 76 views
1

調用一個方法我有一個應用程序,如以下,是否有可能從正在運行的應用

public class OpenApp { 

    public static void main(String[] args) { 
     if(args.length>0) 
     System.out.println("Hi " + args[0]); 
     System.in.read();  
    } 

    public static String sayHi(){ 
     return "Hi"; 

    } 

} 

所以OpenApp將運行。我還有其他一些方法。我可以從另一個應用程序中調用sayHi方法,而無需創建類的新實例。因爲我在運行OpenApp時遇到了一些數據限制。

請更正我如果我的問題是錯誤的。簡單地說,我試圖在2個JVM之間進行通信。所以,我讀過,RMI是進行溝通的最佳方式。那麼有沒有其他辦法。

+0

'Webservices' ...? – 2014-10-28 07:04:46

+0

沒有,試圖避免特定的通信協議。像Java反射一樣,我正在尋找。 – 2014-10-28 07:07:01

+1

@Pasupathi如果你試圖在2個JVM之間進行通信,你需要一些(至少是進程間)通信協議。見例如http://www.javaworld.com/article/2077419/learn-java/interprocess-communications-in-java.html。其他(非網絡透明,僅限本地)備選方案是[FIFO,命名管道或共享內存](http://stackoverflow.com/questions/1416780/java-interprocess-communication)。 – 2014-10-28 07:08:06

回答

1

對於兩個應用程序進行通信,您需要某種形式的Inter-Process Communication, IPC,幾乎沒有定義。所以你需要某種協議。所以,對你的問題的簡短回答是:RMI不是唯一的方式,但所有其他方式都是類似的,通信而不是直接的方法調用。

如果您只是想在另一個應用程序的代碼中調用該方法,請將.jar與該類一起添加到您的應用程序或load the .jar at runtime,並且(因爲這是一個靜態方法)只需調用該方法即可。但這只是正常的靜態方法調用,所以你可能不是這個意思?

+0

Laoding jar就像創建新實例一樣,我在運行的應用程序中有一些數據限制。我會檢查IPC。 – 2014-10-28 07:29:18

相關問題