前提・実現したいこと
jspからサーブレットにhtmlファイルをアップし、そのhtmlファイルをjsoupで解析したい。
しかし、jsoupが登場する行で例外が発生してしまう。eclipseではエラーは出ていません。
発生している問題・エラーメッセージ
HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ サーブレットの実行により例外を投げました 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因 java.lang.NoClassDefFoundError: org/jsoup/Jsoup servlet.TestServlet.Extract(TestServlet.java:49) servlet.TestServlet.doPost(TestServlet.java:38) javax.servlet.http.HttpServlet.service(HttpServlet.java:681) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因 java.lang.ClassNotFoundException: org.jsoup.Jsoup org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215) servlet.TestServlet.Extract(TestServlet.java:49) servlet.TestServlet.doPost(TestServlet.java:38) javax.servlet.http.HttpServlet.service(HttpServlet.java:681) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています Apache Tomcat/9.0.48
該当のソースコード
JSP
1<%@page contentType= "text/html; charset=UTF-8" %> 2 3<html> 4 <head> 5 <title>POST送信データを扱うサーブレット</title> 6 </head> 7 <body> 8 <h2>ブックマーク一括送信フォーム</h2> 9 <form action="TestServlet" method="POST" enctype="multipart/form-data"> 10 <p>ユーザーID:<input type="text" name="userID"><br> 11 <p>HTMLファイル:<input type="file" name="targets"/></p> 12 <p><input type="submit" value="送信" /></p> 13 </form> 14 </body> 15</html> 16
TestServlet.java
(jsoup部分は仮、jsoupがちゃんと使えるかどうかの練習用コードを書いています)
java
1package servlet; 2 3import java.io.*; 4import javax.servlet.*; 5import javax.servlet.annotation.MultipartConfig; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.*; 8 9import javax.xml.transform.*; 10import javax.xml.transform.stream.*; 11 12import java.io.File; 13import org.jsoup.Jsoup; 14import org.jsoup.nodes.Document; 15import org.jsoup.nodes.Element; 16import org.jsoup.select.Elements; 17 18import java.io.IOException; 19 20@MultipartConfig(location="C:/Sobacui") 21public class TestServlet extends HttpServlet { 22 23 //doPost()メソッド 24 public void doPost(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 27 //パラメータの取得 28 String ID = request.getParameter("userID"); 29 Part bookmarkfile = request.getPart("targets"); 30 31 System.out.println("ブックマークを一括で登録します。"); 32 if(bookmarkfile==null){ 33 System.out.println("処理を中止します。"); 34 System.exit(1); 35 }else{ 36 bookmarkfile.write("C:/Sobacui/data/bookmarks.html"); 37 try { 38 Extract(); 39 } catch (Exception e) { 40 // TODO 自動生成された catch ブロック 41 e.printStackTrace(); 42 } 43 } 44 } 45 46 //抽出しPOST 47 public static void Extract() throws Exception { 48 File input = new File("C:/Sobacui/data/bookmarks.html"); 49 Document document = Jsoup.parse(input, "UTF-8"); 50 System.out.println(document.html()); 51 } 52 }
エラーメッセージに該当する場所
java:49 Document document = Jsoup.parse(input, "UTF-8");
java:38 Extract();
補足情報(FW/ツールのバージョンなど)
Apache Tomcat/9.0.48
あなたの回答
tips
プレビュー