stub is required on client side HelloInterface.java is required on client side. If it's missing, HelloClient won't compile. On the server side, if you remove HelloInterface.java, HelloServerImpl won't compile. (HelloServerImpl extends HelloInterface) I renamed the skeleton on the server side and tried to run client.. It worked!!!Why? if the rmiregistry is started on a different port (ie. 2048), be sure to make the following changes: On server side: to start rmiregistry on a different port, type "rmiregistry 2048 &" add port to Naming.rebind instruction in HelloServImpl.java and recompile (javac HelloServImpl) /* redo "rmic HelloServImpl" to create new stub and skeleton /****** don't need to redo rmic - can use existing stub and skeleton if /****** you change port be sure to start server ("java HelloServImpl &") On client side: you may need to get new copy of stub created with rmic on server (see above) add port to naming.lookup instruction in HelloClient.java and recompile (javac HelloClient) run the client ("java HelloClient")