3

Hello Worldサーブレットがwebapps/hello/WEB-INF/class/HelloServlet.classあり、以下のように登録しましたweb.xml

<servlet>
    <servlet-name>helloServlet</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>helloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

ただし、Tomcatは以下の例外で起動できませんでした。

Apr 30, 2012 1:50:10 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet HelloServlet as unavailable
Apr 30, 2012 1:50:10 PM org.apache.catalina.core.ApplicationContext log
java.lang.ClassNotFoundException: HelloServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process
(Http11AprProtocol.java:594)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
    at java.lang.Thread.run(Unknown Source)

Apr 30, 2012 1:50:10 PM org.apache.catalina.core.StandardWrapperValve invoke

これはどのように発生し、どうすれば解決できますか?

4

4 に答える 4

6

主な問題は、サーブレットクラスにパッケージがないことです。1つ宣言します。

package com.example;

public class HelloServlet extends HttpServlet {

また、に登録するときはweb.xml、必ずパッケージを含めてください。

<servlet-class>com.example.HelloServlet</servlet-class>

また、クラスファイルは/WEB-INF/classes、ではなくディレクトリ内にある必要があります/WEB-INF/class

webapps/hello/WEB-INF/classes/com/example/HelloServlet.class
于 2012-04-30T08:47:17.247 に答える
3

一部のパッケージ(デフォルトパッケージではない)にHelloServletクラスを保持するようにしてください。

于 2012-04-30T08:48:18.787 に答える
1

これで、注釈を使用するだけで簡単になります。

package com.yourpackage;

import java.io.IOException;
import java.util.ResourceBundle;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class HelloWorldServlet
 */
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {

WebServletを参照してください

乾杯!!

于 2012-08-13T01:26:30.147 に答える
0

私は同じ問題を抱えていました(「学習」に昔ながらのサーブレットを使用しています)、Mavenプロジェクトを再構築し(Eclipse Maven-> Update Projectで)、EclipseとTomcatの両方でプロジェクトをクリーニングすることで解決しました。クラスがmavenによってコンパイルされておらず、その結果、Tomcatのコンパイル済みパッケージに含まれていないため、エラーがスローされたと思います。

于 2014-11-05T10:07:20.207 に答える