运行cmd,使用rmic Class(你的类名)命令,就会在同一个目录下生成TestServer_Skel.class和TestServer_Stub.class文件。  然后启动RMI Registry,使用start rmiregistry启动RMI Registry。
会新打开一个DOS窗口,不要关闭。先运行服务器程序,然后运行客户端。

解决方案 »

  1.   

    关于Java的RMI编程的一个简单的例子     etre [原作] 现在虽然我们很少用到RMI进行编程,但是做为Java一个最早的分布式解决方案,我们还是有了解的必要,从例子开始吧(虽然是几年前的了)!远程接口RmiHelloRemoteIntfc .javaimport java.rmi.*;public interface RmiHelloRemoteIntfc extends Remote
    {
       String helloRemoteObj(String client) throws RemoteException;
    }远程接口的实现类RmiHelloRemoteObj.javaimport java.rmi.server.*;
    import java.rmi.*;public class RmiHelloRemoteObj extends UnicastRemoteObject implements RmiHelloRemoteIntfc
    {  public RmiHelloRemoteObj() throws RemoteException
      {
        super();
      }  public String helloRemoteObj(String client) throws RemoteException
      {
         return "Hello World"+client;
      }}服务器类RmiHelloServer.javaimport java.io.*;
    import java.rmi.*;
    import java.rmi.server.*;
    import sun.applet.*;
    import java.rmi.registry.LocateRegistry;public class RmiHelloServer
    {  public RmiHelloServer()
      {
      }
      public static void main(String[] args)
      {
        //创建并安装安全管理器
        if(System.getSecurityManager()==null)
        {
           System.setSecurityManager(new RMISecurityManager());
        }    try{
             //创建远程对象
             RmiHelloRemoteObj ttt=new RmiHelloRemoteObj();
             //启动注册表
             LocateRegistry.createRegistry(2222);
             //奖名称绑定到对象
             Naming.rebind("//Fangm:2222/helloObj",ttt);         System.out.println("RMI服务器正在运行");
          }
          catch(Exception e)
          {
             e.printStackTrace();
          }
      }
    }服务器端的权限文件RmiHelloServer.policygrant codeBase
    "file:/e:/download/rmitest/"
    {
     permission java.net.SocketPermission 
          "*:1000-9999","accept,connect,listen,resolve";
    }; 现在就看看Client端是如何连接服务器和进行远程方法的调用的吧
    import java.rmi.*;
    import java.rmi.server.*;public class RmiHelloClient
    {  public RmiHelloClient()
      {
      }
      public static void main(String[] args)
      {
        //创建并安装安全管理器
        if(System.getSecurityManager()==null)
        {
           System.setSecurityManager(new RMISecurityManager());
        }    try{
              RmiHelloRemoteIntfc c1=(RmiHelloRemoteIntfc)Naming.lookup("rmi://Fangm:2222/helloObj");
              System.out.println(c1.helloRemoteObj("Everyone"));
        }
        catch(Exception e)
        {
           e.printStackTrace();
        }
        System.exit(0);   }
    }Client端的权限文件RmiHelloClient.policygrant codeBase
    "file:/e:/download/rmitest/"
    {
      permission java.net.SocketPermission 
          "*:1000-9999","accept,connect,listen,resolve";
    };好了,一个最简单的RMI例子就安无了,对了还少了最重要的一步,那就是编译和运行呢?我们就来了个Bat或Cmd的批处理来进行吧,看看RmiHello.bat吧javac RmiHelloRemoteIntfc.javajavac RmiHelloRemoteObj.javarmic RmiHelloRemoteObjjavac RmiHelloServer.javajavac RmiHelloClient.javaecho 在另一个窗口启动服务器,请稍后
    start java  -Djava.security.policy=RmiHelloServer.policy RmiHelloServerecho 运行客户程序
    java -Djava.security.policy=RmiHelloClient.policy RmiHelloClient这个文件很简单吧!包你一试就通,虽然简单,不过对于初学者来说,还是很不错的哦!
      

  2.   

    我得RMI程序现在已经可以使用,但是我的文件传送是把文件数据放在字节数组中传的,一旦文件过大就无法传送.而且这样内存消耗很严重.我想使用流的方式来实现,请问该如何去做?
    急用,小弟先向各位道谢了!!