2010-10-19 4 views
1

J'ai un problème avec l'exécution de mon application serveur qui s'enregistre dans le registre rmi. Dans Remote interface j'ai méthode qui renvoie JasperPrint. L'exception est levée lorsque le serveur appelle:java.rmi.ServerError: java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JasperPrint

server = (Server)UnicastRemoteObject.exportObject(server, 0); 
Registry registry = LocateRegistry.getRegistry(); 
registry.rebind("server", server); // <----------------------- 

Je jasperreports-3.7.5.jar dans classpath du serveur. Toute aide serait appréciée.

Trace de la pile:

java.rmi.ServerError: Error occurred in server thread; nested exception is: 
    java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JasperPrint 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:393) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250) 
    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:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 
    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 server.ServerImpl.main(ServerImpl.java:126) 
Caused by: java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JasperPrint 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) 
    at java.lang.Class.privateGetPublicMethods(Class.java:2547) 
    at java.lang.Class.getMethods(Class.java:1410) 
    at sun.misc.ProxyGenerator.generateClassFile(ProxyGenerator.java:409) 
    at sun.misc.ProxyGenerator.generateProxyClass(ProxyGenerator.java:306) 
    at java.lang.reflect.Proxy.getProxyClass(Proxy.java:501) 
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:680) 
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:669) 
    at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:592) 
    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:238) 
    at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1531) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1493) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source) 
    at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386) 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250) 
    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:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.ClassNotFoundException: net.sf.jasperreports.engine.JasperPrint 
    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:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    ... 30 more 

Répondre

2

à partir rmiregistry avec:

rmiregistry -J-classpath -J"path\to\jasperreports-3.7.5.jar"

a résolu le problème.

0

Cette erreur peut se produire à cause de plusieurs raisons, j'ai eu cette erreur aussi à plusieurs reprises, essayer quelques refactoring, vérifiez vos talons et squelettes sont là manuellement et trop de « serveur » peut également créer la confusion

Questions connexes