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

Sag*_*tro 11 java itext weblogic8.x

我试图通过以下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";
}
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

我正在使用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;.;
Run Code Online (Sandbox Code Playgroud)

请告诉我为什么我得到这个错误????我花了很多时间来做这个.没有得到小问题.请帮助我.

谢谢

完成建议后的事情.我得到以下错误

 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) 
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 15

之前的回答告诉你,一个罐子丢失,这不是一个糟糕的猜测,因为错误信息清楚地说明找不到其中一个iText类.

不幸的是,该错误消息具有误导性.Java还说如果有任何歧义,它就找不到类.如果您的CLASSPATH中有多个iText jar,就会出现这种情况.

通过在CLASSPATH中添加另一个iText jar,你的问题变得更糟了.现在您遇到的问题是由于您的weblogic实例中的JVM有两个不同版本的iText.

搜索所有CLASSPATH,不要忘记服务器CLASSPATH,你会发现D:\ itextpdf-5.3.4.jar不是weblogic寻找PdfWriter类的唯一地方.从CLASSPATH中删除所有iText罐子,直到只剩下一个.


Abu*_*kar 7

您需要放入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


And*_*ios 5

在WEB-INF/lib文件夹中将您的库添加到war中.