-->

java.lang.NoClassDefFoundError:COM / itextpdf /文本/

2019-07-17 19:23发布

我试图生成通过以下的servlet动态PDF文件。

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// Document Object
import com.itextpdf.text.Document;
//For adding content into PDF document
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.DocumentException;

public class CreatePDFExample extends HttpServlet {

    //invoked from doGet method to create PDF through servlet 
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //Set content type to application / pdf
    //browser will open the document only if this is set
    response.setContentType("application/pdf");
    //Get the output stream for writing PDF object        
    OutputStream out=response.getOutputStream();
    try {
        Document document = new Document();
        /* Basic PDF Creation inside servlet */
        PdfWriter.getInstance(document, out);
        document.open();
        document.add(new Paragraph("Tutorial to Generate PDF using Servlet"));
        document.add(new Paragraph("PDF Created Using Servlet, iText Example Works"));
        document.close();
    }
            catch (DocumentException exc){
            throw new IOException(exc.getMessage());
            }
    finally {            
        out.close();
    }
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    processRequest(request, response);
}

@Override
public String getServletInfo() {
    return "This Servlet Generates PDF Using iText Library";
}
}

但我收到以下错误:

Error 500--Internal Server Error

java.lang.NoClassDefFoundError: com/itextpdf/text/DocumentException
at CreatePDFExample.processRequest(CreatePDFExample.java:24)
at CreatePDFExample.doPost(CreatePDFExample.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)

我使用的WebLogic应用服务器8.1 ....我使用iTextPDF。 所以我已经为JAR文件的CLASSPATH。

CLASSPATH:
D:\itextpdf-5.3.4.jar;D:\servlet-2-3.jar;.;

PATH:
C:\Program Files (x86)\Java\jdk1.6.0_14\bin;.;

请告诉我为什么我收到这个错误????我花了很多的时间this.Not越来越小problem.Please帮我在这。

谢谢

后做的事情。我建议得到以下错误

 Error 500--Internal Server Error

 java.lang.ExceptionInInitializerError
at com.itextpdf.text.pdf.PdfWriter.(PdfWriter.java:1403)
at CreatePDFExample.processRequest(CreatePDFExample.java:26)
at CreatePDFExample.doPost(CreatePDFExample.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
 Caused by: java.lang.NullPointerException
at java.lang.Class.privateGetDeclaredFields(Class.java:1488)
at java.lang.Class.getDeclaredFields(Class.java:1073) 

Answer 1:

以前的答案告诉你一个罐子不见了,这是不是一个糟糕的猜测,因为该错误消息明确表示无法找到iText的类别之一。

不幸的是,该错误信息是具有误导性。 Java也说,它无法找到一个类,如果有任何含糊之处。 这样的话,如果你在你的CLASSPATH多个iText的罐子。

你加入另一个iText的罐子到CLASSPATH使问题变得更糟。 现在你有一个由具有可用于JVM的两个不同版本的iText在你的WebLogic实例造成了问题。

搜寻所有的类路径,不要忘了服务器CLASSPATH,你会发现d:\ itextpdf-5.3.4.jar不是weblogic的地方去寻找的PdfWriter类的唯一地方。 从CLASSPATH中删除所有iText的罐子,直到你只有一个左。



Answer 2:

你需要把你的web应用程序的系统类路径,而不是类路径。

并把在类路径上的jar文件,以便您的服务器在运行时可以得到它的最简单的方法是:

itextpdf-5.3.4.jar

YOUR_WEBAPP_ROOT --> WEB-INF --> lib文件夹

所以现在你的jar文件应该出现在这里

YOUR_WEBAPP_ROOT --> WEB-INF --> lib --> itextpdf-5.3.4.jar



Answer 3:

添加您的库来你的战争,内部WEB-INF / lib文件夹。



Answer 4:

就我而言,iText的v.2.1.7工作,我尝试5.5.3和5.5.4没有运气。

从Primefaces V.5.0用户指南的摘录,第12页“相关性”

“上市的版本(2.1.7的iText,Apache的POI 3.7)进行测试,并已知与PrimeFaces,这些依赖关系也可以,只是没有经过测试的其他版本中的工作。”



Answer 5:

我有一个类似的问题。 在一个系统,它生成PDF是工作的罚款和其他系统我得到这个例外。 做了一些调查后,我发现,日工作的服务器有iText的-2.1.7.js6.jar大小为1105KB和一个没有工作的人12KB。 我取代了罐子一个具有体积小,它开始工作的罚款。 不知道我怎么会出现相同的版本罐子两种不同尺寸。 希望这可以帮助



Answer 6:

我有简单的行动来解决你的错误,你必须“从现有的jar文件的插件”作出新的集成你这一个运行中的配置和最终使用这个插件像LIBRAIRIE我检查这个解决方案,它没有probleme工作



文章来源: java.lang.NoClassDefFoundError: com/itextpdf/text/DocumentException