首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在servlet中使用PDFParser时没有找到任何类Def。但是在Java应用程序中工作

在servlet中使用PDFParser时没有找到任何类Def。但是在Java应用程序中工作
EN

Stack Overflow用户
提问于 2015-02-17 02:14:46
回答 2查看 656关注 0票数 0

我正在尝试编写一个servlet,它读取一个上传的pdf文件,然后从另一个servlet读取它。我想解析这个pdf文件并在解析文本中搜索关键字。

首先,我像一个普通的java代码一样做了应用程序,然后它运行得很好。但是,当我执行与servlet相同的代码时,它显示了一个意外的错误类定义,没有找到错误。

这里是错误:

代码语言:javascript
复制
SEVERE: Servlet.service() for servlet [ex.sat.com.PDFTestServlet] in context with path [/ContentBasedFileRetrival] threw exception [Servlet execution threw an exception] with root cause

java.lang.ClassNotFoundException: org.apache.pdfbox.pdfparser.PDFParser
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at ex.sat.com.PDFTestServlet.pdftoText(PDFTestServlet.java:67)
    at ex.sat.com.PDFTestServlet.doPost(PDFTestServlet.java:48)

我将pdf框jar文件添加到了eclipse项目的库中。没有编译错误。

但是,当我作为java应用程序执行项目时,相同的代码运行良好。

这里是我的servlet:

代码语言:javascript
复制
    package ex.sat.com;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;

@WebServlet("/PDFTestServlet")
public class PDFTestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String SAVE_DIR = "uploadFiles";

/**
 * @see HttpServlet#HttpServlet()
 */
public PDFTestServlet() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setContentType("text/html");
    ServletContext context = getServletContext();
    PrintWriter writer = response.getWriter();

    String appPath = request.getServletContext().getRealPath("");
    String savePath = appPath + File.separator+"j2.pdf";
    writer.println(savePath);
    String pdf_text=pdftoText(savePath);

    writer.println("SATYA");
    writer.println(pdf_text);
}

static String pdftoText(String fileName) {
    PDFParser parser;
    String parsedText = null;;
    PDFTextStripper pdfStripper = null;
    PDDocument pdDoc = null;
    COSDocument cosDoc = null;
    File file = new File(fileName);
    if (!file.isFile()) {
        System.err.println("File " + fileName + " does not exist.");
        return null;
    }       
    try {
        parser = new PDFParser(new FileInputStream(file));
    } catch (IOException e) {
        System.err.println("Unable to open PDF Parser. " + e.getMessage());
        return null;
    }
    try {
        parser.parse();
        cosDoc = parser.getDocument();
        pdfStripper = new PDFTextStripper();
        pdDoc = new PDDocument(cosDoc);
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(5);
        parsedText = pdfStripper.getText(pdDoc);
    } catch (Exception e) {
        System.err
                .println("An exception occured in parsing the PDF Document."
                        + e.getMessage());
    } finally {
        try {
            if (cosDoc != null)
                cosDoc.close();
            if (pdDoc != null)
                pdDoc.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return parsedText;
}

}

EN

回答 2

Stack Overflow用户

发布于 2015-02-17 02:18:54

在我看来,servlet容器没有找到您的库,您可以尝试将jar文件放到容器的库目录中,然后重新启动它。(库不会与应用程序一起部署--通常是这样)。

票数 1
EN

Stack Overflow用户

发布于 2015-02-17 02:35:09

谢谢你们。刚才喜欢答案。问题解决了。--我正在通过添加外部jars、来完成构建路径。实际上,我必须把它作为一个库来添加。因此,在构建路径中,我创建了一个用户库,并将jar文件添加到用户库中,它的工作现在很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28553615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档