C
cdvr
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.class
client\
Client.class
data\
Row.class
RowCreator.class
DefaultRowCreator.class
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.i
bjectInputStream.readProxyDesc(ObjectInputStream.java:
1500)
at java.i
bjectInputStream.readClassDesc(ObjectInputStream.java:
1463)
at java.i
bjectInputStream.readOrdinaryObject(ObjectInputStream.java:
1
699)
at java.i
bjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.i
bjectInputStream.readObject(ObjectInputStream.java:348)
.... 9 more
Why can't it find data.RowCreator? It is definitely in there.
Thanks!
returns a List of Row objects. My directory structure is...
C:\code\bin\
server\
Server.class
client\
Client.class
data\
Row.class
RowCreator.class
DefaultRowCreator.class
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.i
1500)
at java.i
1463)
at java.i
1
699)
at java.i
at java.i
.... 9 more
Why can't it find data.RowCreator? It is definitely in there.
Thanks!