Naming.lookup(url)无法转换或返回null值

时间:2014-02-04 00:49:55

标签: java rmi

在我的RMI代码中,我在此行获得了一个例外:

        RMIImplementation factory
                = (RMIImplementation) Naming.lookup(url);

例外是:

java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to sjdproject.remoteRMI.RMIImplementation

这告诉我Naming.lookup(url)无法强制转换为RMIImplementation的对象。

现在,RMIImplementation扩展了一个接口RMIInterface,它本身扩展了Remote。如果我放入RMIInterface代替RMIIMplementation,我不会得到异常,但工厂最终会成为空值。

这是怎么回事?

1 个答案:

答案 0 :(得分:0)

  1. 您必须强制转换为远程接口,而不是实现类。这就是远程接口存在的原因。

  2. 如果使用Naming.bind()绑定null,则只能从Naming.lookup()获取null。

  3. 我得出结论,你发现了一个例外并忽略了它并继续使用一个仍为空的变量。