前提・実現したいこと
入力パラメータの取得
JSPで入力ボックスに入れた値をサーブレットに渡して表示したい。
入力ボックスは表示できている。
入力ボックスに値を入力して、クエリ送信ボタンを押すと 以下のエラーがでる。
発生している問題・エラーメッセージ
HTTPステータス 500 - Internal Server Error
Type Exception Report
メッセージ サーブレットクラス [EchoServlet] を初期化中にエラーが発生しました
説明 The server encountered an unexpected condition that prevented it from fulfilling the request.
例外
javax.servlet.ServletException: サーブレットクラス [EchoServlet] を初期化中にエラーが発生しました
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:844)
原因
java.lang.ClassNotFoundException: EchoServlet
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1309)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1137)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:844)
注意 原因のすべてのスタックトレースは、のログに記録されています
該当のソースコード
[echo.jsp]
JSP
1<%@page contentType="text/html; charset=Windows-31J"%> 2 3<HTML> 4<BODY> 5 6<H2>EchoServletの入力</H2> 7 8<FORM ACTION="EchoServlet"> 9 <INPUT TYPE="TEXT" NAME="message"> 10 <INPUT TYPE="SUBMIT"> 11</FORM> 12 13</BODY> 14</HTML>
[web.xml]
XML
1<web-app> 2 <servlet> 3 <servlet-name>EchoServlet</servlet-name> 4 <servlet-class>EchoServlet</servlet-class> 5 </servlet> 6 <servlet-mapping> 7 <servlet-name>EchoServlet</servlet-name> 8 <url-pattern>/EchoServlet</url-pattern> 9 </servlet-mapping> 10</web-app>
[EchoServlet.java]
java
1package input; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11public class EchoServlet extends HttpServlet 12{ 13 public void doGet( HttpServletRequest request, 14 HttpServletResponse response ) 15 throws ServletException, IOException 16 { 17 String msg = request.getParameter("message"); 18 19 response.setContentType("text/plain; charset=Windows-31J"); 20 PrintWriter out = response.getWriter(); 21 out.println("message=" + msg); 22 } 23} 24
ファイル階層
basic echo.jsp + input EchoServlet.java EchoServlet.class compaile.bat + WEB-INF web.xml
試したこと
EchoServlet.class のファイル位置をいろいろ変えて試した。
補足情報(FW/ツールのバージョンなど)
Apache Tomcat Version 8.5.32