在进行rmi之前要保证client和server端的防火墙都关闭
问题:在Server端运行完rmiregistry之后,运行java *Server出现一个错误java.lang.ClassNotFoundException: *Impl_Stub
解决方案:
1、在*Server.class所在的目录下,运行rmiregistry
2、在linux下java -Djava.rmi.server.codebase=file:/root/Test/server/ *Server,其中/root/Test/server/为*Impl_Stub.class文件所在的目录;在Windows下java -Djava.rmi.server.codebase=file:/D:\Test\server\ *Server,其中D:\Test\server为*Impl_Stub.class文件所在的目录
也可以这样设置-Djava.rmi.server.codebase=http://www.iteye.com:8081/Test/server/即动态下载方式,注意[color=red]URL后面的/不可省略,使用本地文件目录时必须使用绝对路径[/color]
3、将*Impl_stub复制到classpath目录中去或者将classpath指定到*Impl_Stub.class文件所在的目录
原因:
这里提示的找不到*Impl_stub类,不是由你写的*Server这个程序引起的,是由rmi注册服务器报告的异常,也就是我们前面启动的 rmiregistry ,因为你写的*Server 要求RMI注册服务器注册一个新的类,自然RMI服务器必须知道你的类放在哪里,所以需要通过-Djava.rmi.server.codebase这个运行参数来指定
问题:在Server端运行完rmiregistry之后,运行java *Server出现一个错误java.lang.ClassNotFoundException: *Impl_Stub
解决方案:
1、在*Server.class所在的目录下,运行rmiregistry
2、在linux下java -Djava.rmi.server.codebase=file:/root/Test/server/ *Server,其中/root/Test/server/为*Impl_Stub.class文件所在的目录;在Windows下java -Djava.rmi.server.codebase=file:/D:\Test\server\ *Server,其中D:\Test\server为*Impl_Stub.class文件所在的目录
也可以这样设置-Djava.rmi.server.codebase=http://www.iteye.com:8081/Test/server/即动态下载方式,注意[color=red]URL后面的/不可省略,使用本地文件目录时必须使用绝对路径[/color]
3、将*Impl_stub复制到classpath目录中去或者将classpath指定到*Impl_Stub.class文件所在的目录
原因:
这里提示的找不到*Impl_stub类,不是由你写的*Server这个程序引起的,是由rmi注册服务器报告的异常,也就是我们前面启动的 rmiregistry ,因为你写的*Server 要求RMI注册服务器注册一个新的类,自然RMI服务器必须知道你的类放在哪里,所以需要通过-Djava.rmi.server.codebase这个运行参数来指定