贴ServiceImpl的代码测试的时候先不用打成jar,

解决方案 »

  1.   

    ServiceImpl_Stub和另外一个ske文件是rmi命令对serviceImpl文件生成的。
    不知道你做了没有。
      

  2.   

    我用ant生成的,<rmic base="${dist}/rmi" stubVersion="1.2">......没有ske文件.class之后我用ant打成jar包了,不打jar包也不好用import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;/**
     * <H3>ServiceImpl</H3>
     *
     * @version 1.0, $Revision: $, $Date: $
     * @since 1.0
     * @author <A HREF="mailto:[email protected]">yoinn</A>
     */
    public class ServiceImpl extends UnicastRemoteObject implements IService
    {    /**
         * Comment for <code>serialVersionUID</code>
         */
        private static final long serialVersionUID = -7480424871498982L;    /**
         * @throws RemoteException
         */
        public ServiceImpl() throws RemoteException
        {
            super();
        }    /**
         * @param port
         * @throws RemoteException
         */
        public ServiceImpl(int port) throws RemoteException
        {
            super(port);
        }    /*
         * (non-Javadoc)
         *
         * @see IService#sayHello(java.lang.String)
         */
        public void sayHello(String name) throws RemoteException
        {
            System.out.println("Hello, " + name);
        }}
      

  3.   

    不打成jar是为了调试方便,不是好用不好用的问题。贴你的rebind的代码
      

  4.   

    我说的不好用是说也是同样的问题;java -classpath ./;%CLASSPATH% TestRMIServer=================================================================import java.rmi.Naming;/**
     * <H3>TestRMIServer</H3>
     *
     * @version 1.0, $Revision: $, $Date: $
     * @since 1.0
     * @author <A HREF="mailto:[email protected]">yoinn</A>
     */
    public class TestRMIServer
    {
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            try
            {
                IService service = new ServiceImpl();
                Naming.rebind("//localhost/IService", service);
                // Naming.rebind("IService", service); 这样也不好用
                System.out.println("IService bound in registry");
            }
            catch (Exception e)
            {
                System.out.println("TestRMIServer err: " + e.getMessage());
            }
        }
    }我的MSN: [email protected]
      

  5.   

    噢,我想起来了,应该是securitymanager的问题你把securitymanager加上.就应该OK了
      

  6.   

    你测试的时候 不大包测试成功先的啊
    现在的错误是找不到类。。?securitymanager还有运行时候弄个policy文件试下 允许开所有端口
      

  7.   

    我在 TestRMIServer 里面加了
    System.setSecurityManager(new RMISecurityManager());
    不好用之后又弄了一个server.policy文件,内容如下
    grant {
    permission java.security.AllPermission "", "";
    };也不好用同时应用以上两个方法也不好用都抛出同样的异常!TestRMIServer err: RemoteException occurred in server thread; nested exception i
    s:
            java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
    tion is:
            java.lang.ClassNotFoundException: ServiceImpl_Stub
      

  8.   

    有包结构!我把错误提示中的包结构删掉了还有我使用RMI,只好用过一次,其它的时候都抛出ClassNotFoundException....Stub而那唯一的一次是在windows 2000操作系统下我现在用的是windows xp,我把防火墙关了也不好用;神啊!!救救我吧!!
      

  9.   

    这样  你在用rmic的时候要在src的目录下  而不要在class的目录下使用rmiregistry也要在这个目录下运行的时候加上包名
      

  10.   

    在我的机器上rmic,之后运行,不好用
    把class文件发给 myth822 ,他在他机器上就好用,晕了!
      

  11.   

    Windows下用:start java -classpath ./testRmi.jar;%classpath% TestRMIServer