我正在开发两个通过RMI连接的应用程序。通信是双向的,一切正常,直到我在windows上运行。当我将jar文件带到Debian时,连接失败。
你知道linux有什么区别吗?为什么它不能工作?
编辑:我的代码:
服务器端:

static Registrator clientRegistrator = null; // static field, interface extending java.rmi.Remote
...
Registry rmiRegistry = LocateRegistry.createRegistry(RmiConstants.RMI_REGISTRY_PORT);
clientRegistrator = (Registrator) UnicastRemoteObject.exportObject(new RmiClientRegistrator(networkListeners), RmiConstants.RMI_REGISTRY_PORT); // RmiClientRegistrator implements Registrator interface
rmiRegistry.bind(RmiConstants.RMI_SERVER_MARK, clientRegistrator);

客户端:
static Registrator serverRegistrator = null;
String rmiConnectionString = "rmi://localhost:" + RmiConstants.RMI_REGISTRY_PORT + "/" + RmiConstants.RMI_SERVER_MARK;
serverRegistrator = (Registrator) Naming.lookup(rmiConnectionString);
serverRegistrator.registerClient(dataReceiver); // fails here, with mentioned exception

最佳答案

存根引用的远程对象不再存在。更准确地说,它不再被导出。当客户端仍有活动存根时,不应该发生这种情况,除非您自己未将其报告,或者除非网络分区导致DGC失败。
对此,最可靠的补救方法是在从中导出的JVM中保留对远程对象的静态引用。

08-18 10:38