前提・実現したいこと
JAVA、Tomcatを用いて、localhost上で自作のWebアプリを実行しようとしています。
まずはJavaの道を参考に、Hello,Servletと表示させる簡単なプログラムを作成し実行させていたところ
HTTP Status 500のエラーが発生しました。
発生している問題・エラーメッセージ
500error
1タイプ 例外報告 2 3メッセージ サーブレットクラス [HelloServlet] を初期化中のエラー 4 5説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 6 7例外 8 9javax.servlet.ServletException: サーブレットクラス [HelloServlet] を初期化中のエラー 10 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544) 11 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) 12 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698) 13 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353) 14 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616) 15 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) 16 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) 17 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629) 18 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 19 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 20 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 21 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 22 java.lang.Thread.run(Thread.java:748) 23根本原因 24 25java.lang.ClassNotFoundException: HelloServlet 26 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1372) 27 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1195) 28 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544) 29 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) 30 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698) 31 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353) 32 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616) 33 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) 34 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) 35 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629) 36 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 37 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 38 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 39 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 40 java.lang.Thread.run(Thread.java:748) 41注意 原因のすべてのスタックトレースは、サーバのログに記録されています
該当のソースコード
servlet
1import java.io.*; 2import java.text.*; 3import java.util.*; 4import javax.servlet.*; 5import javax.servlet.http.*; 6 7public class HelloServlet extends HttpServlet { 8 public void doGet(HttpServletRequest request, 9 HttpServletResponse response) 10 throws IOException, ServletException { 11 12 response.setContentType("text/html"); 13 PrintWriter out = response.getWriter(); 14 out.println("<HTML>"); 15 out.println("<BODY>"); 16 out.println(new java.util.Date()); 17 out.println("</BODY>"); 18 out.println("</HTML>"); 19 } 20} 21
webxml
1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Licensed to the Apache Software Foundation (ASF) under one or more 4 contributor license agreements. See the NOTICE file distributed with 5 this work for additional information regarding copyright ownership. 6 The ASF licenses this file to You under the Apache License, Version 2.0 7 (the "License"); you may not use this file except in compliance withn 8 the License. You may obtain a copy of the License at 9s 10 http://www.apache.org/licenses/LICENSE-2.0 11 12 Unless required by applicable law or agreed to in writing, software 13 distributed under the License is distributed on an "AS IS" BASIS, 14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 See the License for the specific language governing permissions and 16 limitations under the License. 17--> 18<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 19 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 20 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 21 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 22 version="3.1" 23 metadata-complete="true"> 24 25 <servlet> 26 <servlet-name>Hello</servlet-name> 27 <servlet-class>HelloServlet</servlet-class> 28 </servlet> 29 <servlet-mapping> 30 <servlet-name>Hello</servlet-name> 31 <url-pattern>/Hello</url-pattern> 32 </servlet-mapping> 33</web-app> 34
testxml
1<Context 2reloadable="false"/> 3
試したこと
ファイルの配置は以下の通りです
\apachetomcat8\webapps\test\WEB-INF\web.xml
\apachetomcat8\webapps\test\WEB-INF\classes\HelloServlet.class
\apachetomcat8\webapps\test\JSP\HelloJsp.jsp
(追記)\apachetomcat8\conf\Catalina\localhost\test.xml
JSPファイルを直接指定すると、localhost上で画面は表示されます
localhost8080:test/JSP/HelloJsp.jsp
しかし、サーブレットを指定するとエラーが発生します
localhost:8080/test/Hello
間違いなくクラスファイルを配置しています。
環境変数も、apache-tomcat8のlib内にあるservlet-api.jarに通しています。
(追記)CLASSPATH C:\apache-tomcat8\lib\servlet-api.jar
手詰まり状態ですので、アドバイスを頂けたらと思います。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Windows10
Tomcat8
Java jdk8u-161
あなたの回答
tips
プレビュー