2015-04-04 3 views
0

Я пытаюсь использовать функции экспорта в Primefaces, и я пытался проверить элемент <p:dataexporter>. Я добавил itextpdf-5.3.0.jar в Библиотеки и путь к классам в проекте в Jdeveloper. Однако, когда я пытался использовать его в щелчку на CommandButton для экспорта DataTable в формате PDF, я получил ошибку ниже:Как исправить dataexporter ClassDefFoundError в PrimeFaces dataexporter

java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException 
    at org.primefaces.component.export.PDFExporter.export(PDFExporter.java:53) 
    at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:97) 
    at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:778) 
    at javax.faces.component.UICommand.broadcast(UICommand.java:300) 
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787) 
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252) 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:173) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315) 
    at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442) 
    at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103) 
    at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) 
    at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:139) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) 
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) 
Caused by: java.lang.ClassNotFoundException: com.lowagie.text.DocumentException 
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297) 
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270) 
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:305) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:246) 
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179) 
    at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43) 
    ... 39 more 

Там есть только один файл JAR, и я пытался загрузить другие файлы банку и попробовать экспорт, однако он все тот же.

ответ

1

Все версии iText старше декабря 2009 года устарели и больше не должны использоваться. См. https://stackoverflow.com/questions/25696851/can-itext-2-1-7-or-earlier-can-be-used-commercially для получения дополнительной информации. (Существует также ряд неофициальных версий iText с номером версии 4.)

Как вы узнаете эти устаревшие версии? Самый простой способ - посмотреть имена пакетов. Когда пакет ссылается на мое имя (lowagie), вы используете устаревшую неподдерживаемую версию iText.

Вы загрузили iText 5.3.0, начиная с 20 июня 2012 года. (Что тоже довольно старо, почему бы не использовать более новую версию?) С декабря 2009 года все имена пакетов были изменены с com.lowagie на com.itextpdf. Дополнительную информацию см. На странице changelog.

Ваше сообщение об ошибке говорит:

java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException 

Это правильно. Пакет com.lowagie.text относится к версии iText, которая старше декабря 2009 года (и все эти версии были удалены с официальных сайтов загрузки). Вы используете версию с классом с именем com.itextpdf.text.DocumentException. В этой версии нет класса с именем com.lowagie.text.DocumentException.

+0

Спасибо, какой из них я должен скачать и использовать? – Learner30

+0

Надеюсь, вы поймете, что я не могу помочь вам в этом вопросе, учитывая тот факт, что я являюсь генеральным директором iText Group. –

+0

Спасибо за поддержку – Learner30

Смежные вопросы