2012-05-05 2 views
2

J'ai un problème avec JODConverter, le NoClassDefFoundError .. J'utilise netbeans 7.1.2, jdk 1.7, jodconverter2.2.2.jar et openoffice 3.3.0 .. Je construis une application d'entreprise java et dans la section ejb j'ajoute la librairie jodconverter2.2.2.jar (clic droit sur le projet ejb, propriétés, bibliothèque add jar/folder) .. Mais quand j'exécute l'application et que je veux convertir un fichier .doc:JodConverter throws NoClassDefFoundError

javax.ejb.EJBException: message-driven bean method public abstract void javax.jms.MessageListener.onMessage(javax.jms.Message) system exception 
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1134) 
at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81) 
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171) 
at $Proxy271.onMessage(Unknown Source) 
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:260) 
at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:114) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.lang.NoClassDefFoundError: com/sun/star/lang/XEventListener 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:756) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:756) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:410) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:410) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at managers.ElaboraDisp.converteInPdf(ElaboraDisp.java:145) 
at managers.ElaboraDisp.onMessage(ElaboraDisp.java:100) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) 
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) 
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) 
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) 
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1099) 
... 7 more 
Caused by: java.lang.ClassNotFoundException: com.sun.star.lang.XEventListener 
at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808) 
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
... 42 more 

Avvertenza: MDB00037: [UploadMultiplo:ElaboraDisp]: Message-driven bean invocation exception: [javax.ejb.EJBException] 
Avvertenza: javax.ejb.EJBException 
javax.ejb.EJBException 
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5215) 
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113) 
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901) 
at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1211) 
at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1186) 
at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:86) 
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:143) 
at $Proxy271.afterDelivery(Unknown Source) 
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:328) 
at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:114) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.lang.NoClassDefFoundError: com/sun/star/lang/XEventListener 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:756) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:756) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:410) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:410) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at managers.ElaboraDisp.converteInPdf(ElaboraDisp.java:145) 
at managers.ElaboraDisp.onMessage(ElaboraDisp.java:100) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) 
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) 
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) 
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) 
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1099) 
at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81) 
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171) 
at $Proxy271.onMessage(Unknown Source) 
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:260) 
... 3 more 
Caused by: java.lang.ClassNotFoundException: com.sun.star.lang.XEventListener 
at com.sun.enterprise.loader.ASURLClassLoader.findClassData(ASURLClassLoader.java:808) 
at com.sun.enterprise.loader.ASURLClassLoader.findClass(ASURLClassLoader.java:696) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
... 42 more 


Avvertenza: MQJMSRA_MR2001: run:Caught Exception from onMessage():Redelivering: 
javax.ejb.EJBException: message-driven bean method public abstract void javax.jms.MessageListener.onMessage(javax.jms.Message) system exception 
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1134) 
at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81) 
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171) 
at $Proxy271.onMessage(Unknown Source) 
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:260) 
at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:114) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.lang.NoClassDefFoundError: com/artofsolving/jodconverter/openoffice/connection/SocketOpenOfficeConnection 
at managers.ElaboraDisp.converteInPdf(ElaboraDisp.java:145) 
at managers.ElaboraDisp.onMessage(ElaboraDisp.java:100) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) 
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) 
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) 
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) 
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1099) 
... 7 more 

Informazioni: MQJMSRA_MR1101: run:Message returned & marked for routing to the DMQ 
Avvertenza: MDB00037: [UploadMultiplo:ElaboraDisp]: Message-driven bean invocation exception: [javax.ejb.EJBException] 
Avvertenza: javax.ejb.EJBException 
javax.ejb.EJBException 
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5215) 
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113) 
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901) 
at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1211) 
at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1186) 
at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:86) 
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:143) 
at $Proxy271.afterDelivery(Unknown Source) 
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:328) 
at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:114) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497) 
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540) 
Caused by: java.lang.NoClassDefFoundError: com/artofsolving/jodconverter/openoffice/connection/SocketOpenOfficeConnection 
at managers.ElaboraDisp.converteInPdf(ElaboraDisp.java:145) 
at managers.ElaboraDisp.onMessage(ElaboraDisp.java:100) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052) 
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124) 
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388) 
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571) 
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861) 
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800) 
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370) 
at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360) 
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348) 
at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1099) 
at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:81) 
at com.sun.enterprise.connectors.inbound.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:171) 
at $Proxy271.onMessage(Unknown Source) 
at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:260) 
... 3 more 

le code de la conversion est standard:

File inputFile=new File("document.doc"); 
    File outputFile=new File("document.pdf"); 
    OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100); 
    connection.connect(); 

    // convert 
    DocumentConverter converter = new OpenOfficeDocumentConverter(connection); 
    converter.convert(inputFile, outputFile); 

    // close the connection 
    connection.disconnect(); 

Dans le terme Inal:

soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 

Je ne comprends pas pourquoi j'ai l'exception :(

PS. dans la section de guerre j'ajoute un dossier "lib" avec la bibliothèque (jodconverter2.2.2.jar)

Répondre

0

L'exception NoClassDefFoundError est levée quand la classe n'est pas trouvée dans classpath. Donc, si vous essayez d'accéder à cette classe dans ejb, elle doit être disponible.

Si vous avez ajouté le dossier lib dans votre fichier .war, le fichier ejb .jar ne peut pas voir le dossier lib placé sous le fichier .war.

Vous devez créer le dossier lib dans votre fichier .ear et dans le fichier application.xml, spécifiez que le répertoire de la bibliothèque est à la fois: votre application Web .war et ejb .jar.

<?xml version="1.0" encoding="UTF-8"?> 
<application xmlns="http://java.sun.com/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd" 
      version="6"> 
    <display-name>yourapp</display-name> 
    <module> 
     <ejb>yourapp-ejb.jar</ejb> 
    </module> 
    <module> 
     <web> 
      <web-uri>yourapp.war</web-uri> 
      <context-root>/</context-root> 
     </web> 
    </module> 
    <library-directory>lib</library-directory> 
</application> 

Cette ligne <library-directory>lib</library-directory> indique que votre répertoire lib est dans l'archive .ear. Aussi, vous devez supprimer le dossier lib de votre fichier .war.

+0

Je crée le fichier application.xml (et le colle dans le dossier des fichiers de configuration du module général du projet), je supprime le dossier WEB-INF/lib dans le module war, et vérifie si le dossier lib existe. fichier d'oreille .. ne fonctionne pas: (... – MI89

+0

Ou avez-vous vérifié si votre application.xml existe dans le répertoire .ear META-INF? –

+1

non il n'y avait pas ... mais maintenant il y a – MI89