Ciao ho creato una piccola e banale applicazione per provare Java RMI.
avvio il Rmiregistry da terminale e lo lascio in esecuzione, avvio l'applicazione server e mi genera il seguente errore:
Creazione e registrazione dell'oggetto Hello
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: helloWorld.interfaces.HelloInterface
at sun.rmi.server.UnicastServerRef.oldDispatch(Unicas tServerRef.java:385)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastSe rverRef.java:240)
at sun.rmi.transport.Transport$1.run(Transport.java:1 53)
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:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:613)
at sun.rmi.transport.StreamRemoteCall.exceptionReceiv edFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(Str eamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:3 43)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at helloWorld.HelloServer.main(HelloServer.java:23)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: helloWorld.interfaces.HelloInterface
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknow n Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(Unicas tServerRef.java:375)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastSe rverRef.java:240)
at sun.rmi.transport.Transport$1.run(Transport.java:1 53)
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:466)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:613)
Caused by: java.lang.ClassNotFoundException: helloWorld.interfaces.HelloInterface
at java.net.URLClassLoader$1.run(URLClassLoader.java: 200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 06)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 51)
at java.lang.ClassLoader.loadClassInternal(ClassLoade r.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at sun.rmi.server.LoaderHandler.loadProxyInterfaces(L oaderHandler.java:707)
at sun.rmi.server.LoaderHandler.loadProxyClass(Loader Handler.java:651)
at sun.rmi.server.LoaderHandler.loadProxyClass(Loader Handler.java:588)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RM IClassLoader.java:628)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIC lassLoader.java:294)
at sun.rmi.server.MarshalInputStream.resolveProxyClas s(MarshalInputStream.java:238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInpu tStream.java:1500)
at java.io.ObjectInputStream.readClassDesc(ObjectInpu tStream.java:1463)
at java.io.ObjectInputStream.readOrdinaryObject(Objec tInputStream.java:1699)
at java.io.ObjectInputStream.readObject0(ObjectInputS tream.java:1305)
at java.io.ObjectInputStream.readObject(ObjectInputSt ream.java:348)
... 9 more
Impossibile registrare l'oggetto Hello
Da notare che l'applicazione č moolto semplice, di seguito vi posto il codice:
package helloWorld;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
/**
* @author --
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class HelloServer {
public static void main(String[] argv) {
System.out.println("Creazione e registrazione dell'oggetto Hello");
try {
Naming.rebind("//localhost/Hello", new Hello());
} catch (RemoteException e) {
e.printStackTrace();
System.out.println("Impossibile registrare l'oggetto Hello");
System.exit(1);
} catch (MalformedURLException e) {
e.printStackTrace();
System.out.println("URL errato");
System.exit(1);
}
System.out.println("Operazione completata");
}
}
Utilizzo Java 5 per cui non č necessario generare lo stub e skeleton vero??
Qlc puo aiutarmi ..grazie mille

Rispondi quotando