前提・実現したいこと
webアプリケーションを作成しようと考えており,アップロードされたpdfファイルを読み込んで,pdfのテキストを抽出しようとしています。jarファイルを置く場所が悪いのか,プログラムに問題があるのかわかりません。下記プログラムはアップロードされたpdfファイルのページ数を表示しようとしていますが,PDDocument document = PDDocument.load(pdffile); がうまくいっていないみたいです。また,PDDocument document = PDDocument.load(pdffile);にカーソルを当てると,
org.apache.pdfbox.pdmodel.PDDocument
注: この要素には添付されたソースも、添付された Javadoc もないため、Javadoc を検出できませんでした。
このような表示がでてきます。
発生している問題・エラーメッセージ
type 例外レポート メッセージ サーブレットの実行により例外を投げました 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.NoClassDefFoundError: org/apache/pdfbox/pdmodel/PDDocument kgu.grades.doPost(grades.java:63) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.PDDocument org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) kgu.grades.doPost(grades.java:63) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 注意 原因のすべてのスタックトレースは、Apache Tomcat/8.0.43のログに記録されています
該当のソースコード
java
1package kgu; 2 3import java.io.File; 4import java.io.IOException; 5import java.io.InputStream; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.MultipartConfig; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.Part; 15 16import org.apache.pdfbox.pdmodel.PDDocument; 17 18/** 19 * Servlet implementation class grades 20 */ 21@WebServlet("/grades") 22@MultipartConfig(location = "") 23public class grades extends HttpServlet { 24 private static final long serialVersionUID = 1L; 25 26 /** 27 * @see HttpServlet#HttpServlet() 28 */ 29 public grades() { 30 super(); 31 // TODO Auto-generated constructor stub 32 } 33 34 /** 35 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 36 */ 37 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 38 // TODO Auto-generated method stub 39 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/graduate_judge.jsp"); 40 rd.forward(request, response); 41 //response.getWriter().append("Served at: ").append(request.getContextPath()); 42 } 43 44 /** 45 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 46 */ 47 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 48 // TODO Auto-generated method stub 49 request.setCharacterEncoding("utf-8"); 50 //pdfのファイルをPartオブジェクトとして取得 51 Part part = request.getPart("pdf"); 52 //ファイル名を取得 53 String filename = part.getSubmittedFileName(); 54 //String filename = Paths.get(part.getSubmittedFileName()).getFileName().toString(); 55 //アップロードするフォルダ 56 String path = getServletContext().getRealPath("/upload"); 57 System.out.println(path); 58 //書き込み 59 //part.write(path+File.separator+filename); 60 61 request.setAttribute("Fname", filename); 62 63 InputStream pdffile = part.getInputStream();//new File(path+File.separator+filename); 64 PDDocument document = PDDocument.load(pdffile); 65 System.out.println("総ページ数:" + document.getNumberOfPages()); 66 67 //Path p = Paths.get(path+File.separator+filename); 68 //Files.delete(p); 69 70 RequestDispatcher rd = request.getRequestDispatcher("WEB-INF/result.jsp"); 71 rd.forward(request, response); 72 //doGet(request, response); 73 } 74 75} 76
あなたの回答
tips
プレビュー