前提・実現したいこと
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から削除しても挙動に変化はありません。
ログもMarkDownの<code>ブロックで囲んでくれると回答者が見やすくなります。
質問者が混乱しているようなので。
MarkDownの<code>ブロックは
```言語名
コード
```
として、新しく別の囲いを作る場合は1行空けてまた<code>ブロックを作りましょう。
LOGの場合は記載されているように修正しましたが、できませんでした。
こういう形でも出来ませんか?
(長いので中略)
```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)
```
ご教授いただいているのに申し訳ありません。
上記の方法でもやはり整形されませんでした。
編集画面見た感じ
まず、最初のサーブレット部はバッククォート(```)で閉じれてないのと、
ブロック毎に1行ぐらい間隔空けてないせいだと思います。
申し訳ございません。ご指摘の通りで整形できました。
ありがとうございました。
Tomcatの設定に関する質問なので、Tomcatタグの追加をご考慮ください。
ご提示いただいたエラーログは、いつ、発生しているのでしょうか?
Tomcatを起動した直後ですか?該当URLへのアクセス時ですか?
また、Tomcatの起動は、どのような手段で確認されたのでしょうか?
エラーログは、フィルタに設定されているSampleFilterクラスが見つかりません、です。
SampleFilterの記述された設定ファイルをご確認いただき、該当クラスの存在をご確認ください。