start rmiregistry
rmic javarmi.ClockImpl
java javarmi.ClockServer

解决方案 »

  1.   

    关键是调用的时候指定一个参数
    java -Djava.rmi.server.codebase=file:/E:\mummy\TestRMI\bin\ xxx.xxxx.YourClass
    codebase指定的参数就是你的stub存放的路径
      

  2.   

    你调用start rmiregistry时注册与对应名字对应的对象到命名服务器时,不能关闭弹出的窗口。
    你照着下面的步骤试试:
    下面是清华大学视频教材的一个例子:
     1. 构造一个远程接口Hello:  package hello; 
      public interface Hello extends java.rmi.Remote { 
      //rmi应用程序必须继承自java.rmi.Remote
        String sayHello() throws java.rmi.RemoteException ; 
        //定义可以远程调用的接口
      } 2. 完成server方程序,定义HelloImpl类实现Hello接口:  package hello;
      import java.rmi.*;
      import java.rmi.server.UnicastRemoteObject;
      public class HelloImpl extends UnicastRemoteObject implements Hello 
                         //实现Hello接口
      {
        private String name;
        public HelloImpl (String s ) throws java.rmi.RemoteException{
        super(); //调用父类的构造函数
        name = s;
      }
      public String sayHello() throws RemoteException {
        return "Hello world!"; //实现Hello接口定义的方法
      }
      public static void main ( String args [])
      {
        System.setSecurityManager ( new RMISecurityManager() ); 
        //设置RMI程序需要的安全策略
        try
        {
         HelloImpl obj = new HelloImpl("HelloServer"); 
         //生成一个HelloImpl的实例
         Naming.rebind("HelloServer", obj); 
         //将这个实例绑定到一个名字上
         System.out.println("HelloImpl created and bound in the registry to the name HelloServer");
        } catch (Exception e)
        {
         System.out.println("HelloImpl.main: an exception occured:");
         e.printStackTrace(); //产生异常的话,打印出出错信息
        }
      }
    }  server方生成一个远程对象并和一个可和客户对话的名称"HelloServer"绑定。Client端可以根据该名称寻找相应的远程对象,进而调用其远程方法。 3. 完成client方程序  package hello;
      import java.rmi.*; public class HelloClient 
      {
       public static void main(String args[])
      {
       System.setSecurityManager(new RMISecurityManager() ); 
       //设置RMI需要的安全策略
       try
       {
        Hello obj = (Hello) Naming.lookup("HelloServer"); 
        //从服务端获得一个Hello的远程对象
        String message = obj.sayHello(); 
        //远程调用Hello的方法
        System.out.println(message); 
        //将输出结果打印
       } catch (Exception e)
       {
        System.out.println("Hello client : an exception occured");
        e.printStackTrace(); //若有异常,输出异常信息
       }
      }
    }   client利用java.rmi包中的Naming类的lookup()方法获得远程对象obj,然后调用其远程方法sayHello()获得字符串"Hello World",并输出到屏幕上。  要运行这几个程序,还有一些工作要做,这几个程序的文件名为Hello.java、HelloImpl.java、HelloClient.java,它们都被放置在的的d:\hello目录下,在windows下,你需要在命令窗口中如此运行它们:  1. Set CLASSPATH = %CLASSPATH%;d:
      2. 在d:\hello下编译源代码:
        javac -d .. *.java  3. 在生成端头和框架模块,首先把目录切换回d:    rmic -d . hello.HelloImpl  4. 在d:\下运行RMI远程对象注册程序
        start rmiregistry  5. 在d:\下运行服务器程序
        java -Djava.security.policy=my.policy hello.HelloImpl  6. 在d:\下运行客户端程序
        java -Djava.security.policy=my.policy hello.HelloClient  其中上面的步骤中5和6出现的my.policy是一个文件,这个文件和Java的安全机制有关,在这个程序中我们不需要安全限制,所以我们把权限设为都可以访问。my.policy如下:
      grant {
          permission java.security.AllPermission;
      };
     
      

  3.   

    我觉得XML-RPC比较好用,是轻量级的rmi,
    看看api一般就知道怎么调用了
    http://www.xmlrpc.com/
    里面有例子的