2015-02-02 3 views
0

나는이 RMI 코드를 가지고 있는데 왜 IAuthentication 클래스를 찾지 못하는지 모르겠다. 클래스가 패키지에 있습니다.RMI classnotfoundexception java

ServiceFacade exception: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: es.deusto.ingenieria.sd.authentication.server.remote.IAuthentication 
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: es.deusto.ingenieria.sd.authentication.server.remote.IAuthentication 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:400) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248) 
    at sun.rmi.transport.Transport$1.run(Transport.java:159) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:695) 
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) 
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:359) 
    at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source) 
    at java.rmi.Naming.rebind(Naming.java:160) 
    at es.deusto.ingenieria.sd.authentication.server.AuthenticationServer.main(AuthenticationServer.java:25) 
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    java.lang.ClassNotFoundException: es.deusto.ingenieria.sd.authentication.server.remote.IAuthentication 
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:390) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:248) 
    at sun.rmi.transport.Transport$1.run(Transport.java:159) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:155) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 
    at java.lang.Thread.run(Thread.java:695) 
Caused by: java.lang.ClassNotFoundException: es.deusto.ingenieria.sd.authentication.server.remote.IAuthentication 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.rmi.server.LoaderHandler$Loader.loadClass(LoaderHandler.java:1185) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:249) 
    at sun.rmi.server.LoaderHandler.loadClassForName(LoaderHandler.java:1198) 
    at sun.rmi.server.LoaderHandler.loadProxyInterfaces(LoaderHandler.java:710) 
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:654) 
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:591) 
    at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:628) 
    at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294) 
    at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:242) 
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1537) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) 
    ... 12 more 
+0

전체 스택 추적을 게시하십시오. 귀하의 코드에서 아무 것도 언 마샬링 할 이유가 없습니다. – talex

+0

@talex RMI는 마샬링 및 언 마샬링을 기반으로합니다. – EJP

답변

0

레지스트리는 CLASSPATH에서 사용할 수있는 예외라는 이름의 클래스가 없습니다 :

String name = "//" + args[0] + ":" + args[1] + "/" + args[2]; 

try { 
    ApplicationService appService = new ApplicationService(); 
    IAuthentication MainServer = new Authentication(appService); 
    Naming.rebind(name, MainServer); 
    System.out.println("- ServiceFacade '" + name + "' active and waiting..."); 
} catch (Exception e) { 
    System.err.println("$ ServiceFacade exception: " + e.getMessage()); 
    e.printStackTrace(); 
} 

이 내가 무엇을 얻을 수 있습니다.