2014-10-28 42 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

相关问题