>rmiregistry
注册程序开始运行了,不要管他,现在切换到另外一个控制台运行服务器 >java HelloImpl
当启动成功出现Ready...... 这个服务器就开始工作了,把接口的实现加载到内存等待客户端的联接。现在切换到第三个控制台,启动我们的客户端。
启动客户端:为了在其他的机器运行客户端程序你需要一个远程接口(IHello.class) 和一个stub(HelloImpl_Stub.class)。 使用如下命令运行客户端
>java Hello_RMI_Client但是这时提示:
Exception in thread “main” java.lang.NoClassDefFoundError:Hello_RMI_Client
Caused by:java.lang.ClassNotFoundException:Hello_RMI_Client
  .
  .
  .
Could not find the main class:Hello_RMI_Client.Program will exit.1:定义一个远程接口
IHello.java代码如下:
import java.rmi.Remote;
public interface IHello extends Remote {
public String sayHello(String name) throws java.rmi.RemoteException;
}
2:实现远程的接口(服务端就在此远程接口的实现类中)
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class HelloImpl extends UnicastRemoteObject implements IHello {
// 这个实现必须有一个显式的构造函数,并且要抛出一个RemoteException异常  
protected HelloImpl() throws RemoteException {
super();
}
private static final long serialVersionUID = 4077329331699640331L;
public String sayHello(String name) throws RemoteException {
return "Hello " + name + " ^_^ ";
}
public static void main(String[] args) {
try {
IHello hello = new HelloImpl();
java.rmi.Naming.rebind("rmi://localhost:1099/hello", hello);
System.out.print("Ready......");
} catch (Exception e) {
e.printStackTrace();
}
}
}
3:新建RMI客户端调用程序import java.rmi.Naming;
public class Hello_RMI_Client {
public static void main(String[] args) {
try {
IHello hello = (IHello) Naming.lookup("rmi://localhost:1099/hello");
System.out.println(hello.sayHello("zhangxianxin"));
} catch (Exception e) {
e.printStackTrace();
}
}
}