2012-05-05 2 views
2

JODConverter의 NoClassDefFoundError에 문제가 있습니다. netbeans 7.1.2, jdk 1.7, jodconverter2.2.2.jar 및 openoffice 3.3.0을 사용하고 있습니다. Java 엔터프라이즈 애플리케이션을 구축하고 있습니다. 그리고 ejb 섹션에서 jodconverter2.2.2.jar 라이브러리를 추가합니다 (ejb 프로젝트, 속성, 라이브러리의 jar/폴더 추가 오른쪽 클릭) ..하지만 응용 프로그램을 실행하고 .doc 파일을 변환하려고 할 때 : 용어 속으로JodConverter가 NoClassDefFoundError를 throw합니다.

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(); 

:

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 

변환의 코드는 표준입니다 inal : 나는 예외 :(

PS를했습니다 이유

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

이해가 안 돼요. (jodconverter2.2.2.jar) 라이브러리가있는 "lib"폴더를 추가합니다.

답변

0

클래스 경로에 클래스가 없으면 NoClassDefFoundError 예외가 발생합니다. 그래서 당신이 ejb에서이 클래스에 접근하려고한다면 그것을 사용할 수 있어야합니다.

.war 파일에 lib 폴더를 추가 한 경우 ejb .jar에서 .war 파일 아래에있는 lib 폴더를 볼 수 없습니다.

.ear 파일에 lib 폴더를 만들고 application.xml 파일에 웹 응용 프로그램 .war 및 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> 

이 줄 <library-directory>lib</library-directory>은 lib 디렉토리가 .ear 아카이브에 있음을 나타냅니다. 또한 .war 파일에서 lib 폴더를 제거해야합니다.

+0

나는 application.xml 파일을 만들고 프로젝트의 일반 모듈의 설정 파일 폴더에 붙여 넣는다. WAR 모듈의 WEB-INF/lib 폴더를 제거하고 lib 폴더가 있는지 확인한다. 귀 파일 .. 작동하지 않습니다. (... – MI89

+0

또는 application.xml이 .ear META-INF 디렉토리에 있는지 확인 했습니까? –

+1

아니요 ...하지만 지금은 대답이 있습니다. – MI89

관련 문제