質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1475閲覧

サーブレット内のJsoupで起こるエラー(HTTPステータス 500 – Internal Server Error)

tamagoice

総合スコア1

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/11/10 14:36

編集2021/11/10 14:39

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/11/10 20:26

> eclipseではエラーは出ていません。 どのように実行環境にデプロイされたのでしょう。
tamagoice

2021/11/11 04:14

すみません。実行はしておらずeclipse内の記入画面でエラーの表示は出ていないという意味です。 tomcatでの実行は、全体ファイルをWARファイルでエクスポートし、そのファイルをtomcatのwebappsの中に置き起動しています。 ※ほんと初心者な者で、質問にちゃんと回答ができているのかさえも分かっていません。すみません。
m.ts10806

2021/11/11 04:38

warの作り方とTomcatを導入されたOS含めた環境情報を追記してください。
tamagoice

2021/11/11 05:13

このプログラムは引き継いだもので、そのマニュアルにはこう書いてありました。 「実行に必要な WAR ファイルのビルドには ApacheMaven を使用している. Maven プロジェクトの設定を pom.xml に記述する. また, Sobacui に必要なライブラリ(Apache Jena など)も pom.xml に記述する. WAR ファイル作成は Eclipse ではプロジェクト名(SBMSystem)を右クリックし, エクスポートを選択選択肢の中から Web を選び, さらにその中から WAR ファイルを選択」 そのpom.xml↓ 「<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>SBMSystem</groupId> <artifactId>SBMSystem</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.jena</groupId> <artifactId>jena-core</artifactId> <version>3.7.0</version> </dependency> <dependency> <groupId>org.apache.jena</groupId> <artifactId>jena-arq</artifactId> <version>3.7.0</version> </dependency> <dependency> <groupId>org.apache.jena</groupId> <artifactId>jena-tdb</artifactId> <version>3.7.0</version> </dependency> <dependency> <groupId>org.apache.jena</groupId> <artifactId>jena-text</artifactId> <version>1.0.1</version> </dependency> </dependencies> </project>」 環境は良く分からないので色々載せておきます。 エディション Windows 10 Pro バージョン 21H1 インストール日 ‎2021/‎03/‎13 OS ビルド 19043.1320 C:\>java -version java version "17.0.1" 2021-10-19 LTS Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39) Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing) C:\Sobacui\tomcat-9.0.48\bin>version.bat Using CATALINA_BASE: "C:\Sobacui\tomcat-9.0.48" Using CATALINA_HOME: "C:\Sobacui\tomcat-9.0.48" Using CATALINA_TMPDIR: "C:\Sobacui\tomcat-9.0.48\temp" Using JRE_HOME: "C:\Program Files\Java\jre1.8.0_291" Using CLASSPATH: "C:\Sobacui\tomcat-9.0.48\bin\bootstrap.jar;C:\Sobacui\tomcat-9.0.48\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" Server version: Apache Tomcat/9.0.48 Server built: Jun 10 2021 09:22:01 UTC Server number: 9.0.48.0 OS Name: Windows 10 OS Version: 10.0 Architecture: amd64 JVM Version: 1.8.0_291-b10 JVM Vendor: Oracle Corporation
tamagoice

2021/11/11 09:30

mavenのpom.xmlに下記を追加したらエラーがなくなりました。 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.14.3</version> </dependency> m.ts10806さんの質問おかげでWARファイルのビルドやmavenについて調べるきっかけになりました。ご協力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問