#やりたいこと
tomcatでHelloServletを表示させる簡単なプログラムを実行したいです。
webアプリ、サーバ系初心者ですので、お助けいただけたらと思っています。
よろしくお願いいたします。
#起きているエラー
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)
tomcatlog
114-Mar-2021 08:47:58.352 情報 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor 配備記述子 [C:\apache-tomcat8\conf\Catalina\localhost\test.xml] を配備します 214-Mar-2021 08:47:58.383 警告 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor docBase [c:\apache-tomcat8\webapps\test] はホストの appBase に含まれるため無視します。 314-Mar-2021 08:47:58.525 重大 [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource アノテーションのWebリソース[/WEB-INF/classes/HelloServlet.class]を処理できません 4 java.io.IOException: Stream closed 5 at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:159) 6 at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) 7 at java.io.BufferedInputStream.read(BufferedInputStream.java:265) 8 at java.io.DataInputStream.readInt(DataInputStream.java:387) 9 at org.apache.tomcat.util.bcel.classfile.ClassParser.readID(ClassParser.java:199) 10 at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:78) 11 at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2008) 12 at org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource(ContextConfig.java:1916) 13 at org.apache.catalina.startup.ContextConfig.processClasses(ContextConfig.java:1176) 14 at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1093) 15 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:779) 16 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299) 17 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) 18 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5069) 19 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 20 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743) 21 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719) 22 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) 23 at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:606) 24 at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1766) 25 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 26 at java.util.concurrent.FutureTask.run(FutureTask.java:266) 27 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 28 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 29 at java.lang.Thread.run(Thread.java:748)
#ソースコードとcontextpath設定
HelloServlet
1//(1) 2import java.io.*; 3import javax.servlet.*; 4import javax.servlet.http.*; 5 6//(2) 7public class HelloServlet extends HttpServlet { 8 //(3) 9 public void service(HttpServletRequest req, 10 HttpServletResponse res) 11 throws ServletException, IOException { 12 13 //(4) 14 PrintWriter out = res.getWriter(); 15 //(5) 16 out.println("<HTML>"); 17 out.println("<BODY>"); 18 out.println("<H3>Hello World!</H3>"); 19 out.println("</BODY>"); 20 out.println("</HTML>"); 21 22 } 23}
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 with 8 the License. You may obtain a copy of the License at 9 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 34</web-app> 35
testxml
1<Context path="/test" reloadable="true" docBase="c:/apache-tomcat8/webapps/test/" workDir="c:/apache-tomcat8/webapps/test/work" > 2</Context> 3
#ファイルの配置場所
HelloServlet.class
\apache-tomcat8\webapps\test\WEB-INF\classes
(確実にクラスファイルを置いています)
web.xml
\apache-tomcat8\webapps\test\WEB-INF
test.xml
\apache-tomcat8\conf\Catalina\localhost
環境変数は
CLASSPATH \apache-tomcat8\lib\servlet-api.jar に通しています。
#行ったこととエラー発生について
\apache-tomcat8\webapps\test\JSP\HelloJsp.jsp
は直接URL localhost:8080/test/JSP/HelloJsp.jspとたたくことでアクセスできますが
localhost:8080/test/Hello
とサーブレットを指定すると500エラーになります。
tomcatのcatalinaログを確認したところ、
14-Mar-2021 08:47:58.383 警告 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor docBase [c:\apache-tomcat8\webapps\test] はホストの appBase に含まれるため無視します。
14-Mar-2021 08:47:58.525 重大 [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.processAnnotationsWebResource アノテーションのWebリソース[/WEB-INF/classes/HelloServlet.class]を処理できません
という警告と重大情報が記載されていました。
これはtest.xmlのコンテキストパスが通っていないということでしょうか?
以上、よろしくお願いいたします。
あなたの回答
tips
プレビュー