Linux 上的 java.rmi.NoSuchObjectException

标签 java linux rmi



我正在开发两个通过 RMI 连接的应用程序。通信是双向的,一切正常,直到我在 Windows 上运行。当我将 jar 文件传输到 Debian 时,连接失败并显示 java.rmi.NoSuchObjectException

知道 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

最佳答案

您的 stub 引用的远程对象不再存在。更准确地说,它不再被导出。当客户端仍然有它的实时 stub 时,这不应该发生,除非您自己取消导出它,或者除非网络分区导致 DGC 故障。

对此最可靠的补救措施是在从中导出的 JVM 中保留对远程对象的静态引用。

关于Linux 上的 java.rmi.NoSuchObjectException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501873/

相关文章:

java - 移除 ActionBar 边框

linux - apache 无法读取文档根目录中的 755 文件夹

java - GAE 中的 Hibernate Ehcache 抛出 java.lang.NoClassDefFoundError : java. rmi.server.UID 是受限类

java - NAT 连接后面的 RMI 服务器拒绝托管

java - 在 Mac OS X Lion 中运行 RMI Hello world 失败

java - 可比和泛型

java - JPasswordField长度跳过检查

java - Spring Android Framework - 通过 HTTP GET 检索 JSON 数据

linux - 如何在复杂的文本文件中使用 Awk 段落?

linux - 如何在循环内grep排除?