🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

2回答

1945閲覧

Javaで作成したサーブレットをTomcat上で動作させると「HTTPステータス404」となる

hide313Y110

総合スコア5

Java

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

0グッド

0クリップ

投稿2021/03/03 02:23

編集2021/03/03 05:11

前提・実現したいこと

 Java初心者で、参考書を使用して勉強中です。

 Javaでサーブレットを作成し、Tomcat9を立ち上げて動かそうとしていますが、うまく動きません。
これを動くようにして、画面が表示されるようにしたいです。

Tomcat自体は立ち上がります。

 よろしくお願いいたします。

発生している問題・エラーメッセージ

 表示されるメッセージ:「HTTPステータス 404 – 見つかりません。」

該当のソースコード

Java

1import java.util.*; 2import java.io.*; 3import javax.servlet.*; 4import javax.servlet.http.*; 5 6/** 7 * Sample1.java:サーブレットを作成する 8 */ 9public class Sample1 extends HttpServlet { 10 11 /** 12 * GETリクエストを受け取った時の処理 13 * @param request リクエスト 14 * @param response レスポンス 15 */ 16 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { 17 18 try { 19 // コンテンツタイプの設定 20 response.setContentType("text/html; charset=UTF-8"); 21 22 // 現在日時取得 23 Date dt = new Date(); 24 25 // HTML文書の書き出し 26 PrintWriter pw = response.getWriter(); 27 pw.println("<!DOCTYPE html><html>\n" + 28 "<head><title>サンプル</title></head>\n" + 29 "<body><div style=\"text-align: center;\">\n" + 30 "<h2>ようこそ</h2>\n" + 31 "<hr/>\n" + 32 "今 " + dt + " です。<br/>\n" + 33 "お選びください。<br/>\n" + 34 "<br/>\n" + 35 "<a href=\"../car1.html\">乗用車</a><br/>\n" + 36 "<a href=\"../car2.html\">トラック</a><br/>\n" + 37 "<a href=\"../car3.html\">オープンカー</a><br/>\n" + 38 "</div></body>\n" + 39 "</html>\n"); 40 } catch (Exception e) { 41 e.printStackTrace(); 42 } 43 44 } 45}

text

103-Mar-2021 10:50:29.721 重大 [main] org.apache.catalina.core.StandardContext.filterStart フィルタ [SampleFilter] の起動中の例外です 2 java.lang.ClassNotFoundException: SampleFilter 3 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364) 4 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1187) 5 at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:539) 6 at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:520) 7 at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150) 8 at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:249) 9 at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102) 10 at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4566) 11 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5203) 12 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 13 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) 14 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) 15 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706) 16 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1093) 17 at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1810) 18 at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 19 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 20 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 21 at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) 22 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1013) 23 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:428) 24 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1520) 25 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309) 26 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) 27 at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) 28 at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) 29 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936) 30 at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843) 31 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 32 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) 33 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) 34 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 35 at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 36 at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) 37 at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) 38 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) 39 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 40 at org.apache.catalina.core.StandardService.startInternal(StandardService.java:434) 41 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 42 at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) 43 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 44 at org.apache.catalina.startup.Catalina.start(Catalina.java:772) 45 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 46 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 47 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 48 at java.base/java.lang.reflect.Method.invoke(Method.java:564) 49 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) 50 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

xml

1<設定ファイル> 2<?xml version="1.0" encoding="ISO-8859-1"?> 3 4<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 6 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 7 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 8 version="4.0" 9 metadata-complete="true"> 10 11 <display-name>YasaJava</display-name> 12 <description>YasaJava </description> 13 14 <servlet> 15 <servlet-name>Sample1</servlet-name> 16 <servlet-class>Sample1</servlet-class> 17 </servlet> 18 19 <servlet-mapping> 20 <servlet-name>Sample1</servlet-name> 21 <url-pattern>/servlet/Sample1</url-pattern> 22 </servlet-mapping> 23 24</web-app>

フォルダ構成

### 試したこと  フォルダ構成、web.xmlの設定に誤りがないことを確認しました。  Javaソースのコンパイルは通ります。 ### 補足情報(FW/ツールのバージョンなど)  - OS:win10 - Java:java14 - Tomcat:9  例外で出力されるXXXFilterはweb.xmlから削除しても挙動に変化はありません。

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

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

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

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

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

K_3578

2021/03/03 02:33 編集

ログもMarkDownの<code>ブロックで囲んでくれると回答者が見やすくなります。
K_3578

2021/03/03 02:49

質問者が混乱しているようなので。 MarkDownの<code>ブロックは ```言語名 コード ``` として、新しく別の囲いを作る場合は1行空けてまた<code>ブロックを作りましょう。
hide313Y110

2021/03/03 04:31

LOGの場合は記載されているように修正しましたが、できませんでした。
K_3578

2021/03/03 04:40

こういう形でも出来ませんか? (長いので中略) ```text 03-Mar-2021 10:50:29.721 重大 [main] org.apache.catalina.core.StandardContext.filterStart フィルタ [SampleFilter] の起動中の例外です ・ ・ ・ at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) ```
hide313Y110

2021/03/03 04:45

ご教授いただいているのに申し訳ありません。 上記の方法でもやはり整形されませんでした。
K_3578

2021/03/03 04:53

編集画面見た感じ まず、最初のサーブレット部はバッククォート(```)で閉じれてないのと、 ブロック毎に1行ぐらい間隔空けてないせいだと思います。
hide313Y110

2021/03/03 05:12

申し訳ございません。ご指摘の通りで整形できました。 ありがとうございました。
YT0014

2021/03/04 00:36

Tomcatの設定に関する質問なので、Tomcatタグの追加をご考慮ください。
YT0014

2021/03/04 00:44 編集

ご提示いただいたエラーログは、いつ、発生しているのでしょうか? Tomcatを起動した直後ですか?該当URLへのアクセス時ですか? また、Tomcatの起動は、どのような手段で確認されたのでしょうか?
YT0014

2021/03/04 00:45

エラーログは、フィルタに設定されているSampleFilterクラスが見つかりません、です。 SampleFilterの記述された設定ファイルをご確認いただき、該当クラスの存在をご確認ください。
guest

回答2

0

HTTPステータス404のエラーっていうのは
リクエストしているページが見つからないって事なんで、
指定が間違ってるかそもそも存在しないって事です。改めて探してみましょう。

投稿2021/03/03 02:54

K_3578

総合スコア1282

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

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

hide313Y110

2021/03/03 04:31

この点については、問題ないことを確認しています。
K_3578

2021/03/03 05:44

momon-gaさんも仰られていますけど、アクセスするURLを知りたいですね
guest

0

フォルダ構成、web.xmlの設定に誤りがないことを確認しました。

servlet-mappingについて、記載ないですか?

やさしいjavaのサンプルコードには記載されてるみたいですけど。

投稿2021/03/03 02:49

momon-ga

総合スコア4826

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

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

hide313Y110

2021/03/03 04:33

申し訳ございません、コピペの誤りでservlet-mappingも設定して動作させています。 それの上でご質問させていただいている現象となっています。
momon-ga

2021/03/03 04:40

たぶん、コピペ誤りじゃないですか? 実際にどのように設定しているか提示するわけでもなく 「問題ありません。設定しています。」というような情報しかなければ、お手上げです。
hide313Y110

2021/03/03 04:50

申し訳ございません、コピペの誤りとういのうはこの質問へのコピペに誤りがあるという意味です。 検証した時は、サンプルから不要な設定(Sample2…)を削除しています。 内容は修正させていただきました。 逆に不足している情報がございましたら、ご教授ください。
hide313Y110

2021/03/03 06:16

URL記載がありませんでした。すみませんでした。 記載していただいているものと同じURLにアクセスしています。
momon-ga

2021/03/03 06:49

http://mana.on.coocan.jp/yasaj.html こちらのサンプルコードで動くか試してみてはどうでしょう。 動いたなら差を比べてみたら問題が発見できると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問