Java RMI ClassCastException error
这是我在做第一个RMI程序遇到的问题,在java.sun.com jGuru 等forum上浏览了相关帖子,发现这是一个非常普遍的问题,但是居然没有一个解决方法?!
具体是这样的, 我定义一个remote interface
public interface MyInterface extends Remote{
...}
实现class MyImpl extends UnicastRemoteObject implements MyInterface{
...}
当然这个interface 和 MyImpl 都在一个叫“server”的package里头
对应地,写了一个 Client类
public Client {
... main(...){
String name = "//127.0.0.1/MyInterface";
MyInterface remote =
(MyInterface)Naming.lookup(name);} //Exception here
}
用rmic编译生成stub后,启动rmiregistry没问题
启动server MyImpl 没问题
启动 Client后,报错:
java.lang.ClassCastException
at client.Client.main(Client.java:22)
看了网上许多帖子,引起这个问题一般是因为Cast成了实现Class,比如这里的
MyImpl,而不是MyInterface,但是上面没有问题,很明显.何况,MyImpl只存在在
server里头,client根本看不到.
我现在怀疑和Classpath等路径设置有关,不知道有没有成功做过RMI的人说说自己是怎么样的,我都放弃知道原因了. :(