I am trying to setup a basic client/server, in which the server returns a List of Row objects. My directory structure is... C:\code\bin\ server\ Server client\ Client data\ Row RowCreator DefaultRowCreator The RowCreator interface extends the rmi.Remote interface and has one method, createRows. DefaultRowCreator is a concrete implementation of RowCreator. Row is the data object which gets returned in a List by RowCreator. The server looks like.... RowCreator creator = new TableDataCreator(); RowCreator stub = (RowCreator) UnicastRemoteObject.exportObject(creator, 0); Registry registry = LocateRegistry.getRegistry(); registry.bind("row_creator", stub); So I have the classes all compiled, and I open a command prompt to the "bin" directory. c:\code\bin> start rmiregistry c:\code\bin> java -claspath . server.Server I get the following... java.rmi.ServerException: RemoteException occurred in server thread; nested exce ption is: java.rmi.UnmarshalException: error unmarshalling arguments; nested excep tion is: java.lang.ClassNotFoundException: data.RowCreator at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:385 ) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4 66) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport .java:707) at java.lang.Thread.run(Thread.java:595) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknow n Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) at server.DefaultServer.setupRMI(DefaultServer.java:31) at Main.main(Main.java:33) Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested ex ception is: java.lang.ClassNotFoundException: data.RowCreator at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:375 ) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:240) at sun.rmi.transport.Transport$1.run(Transport.java:153) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:149) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4 66) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport .java:707) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.ClassNotFoundException: data.RowCreator at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:242) at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:7 07) at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:651) at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:588) at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:6 28) at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294 ) at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStrea m.java:238) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1500) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1463) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1 699) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) ... 9 more Why can't it find data.RowCreator? It is definitely in there. Thanks!