【问题标题】:my servlet classes are not instantiating from tomcat server in ECLIPSE IDE我的 servlet 类没有从 ECLIPSE IDE 中的 tomcat 服务器实例化
【发布时间】:2015-05-01 15:32:53
【问题描述】:
exception 

javax.servlet.ServletException: Error instantiating servlet class BeerSelect
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)


root cause 

java.lang.ClassNotFoundException: BeerSelect
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.

index.jsp

     <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN"            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Insert title here</title>
   </head>
   <body>
   <h1 align="center">Beer Selection Page</h1>
   <form method="post"
       action=”SelectBeer.do”>
        Select beer characteristics<p>
    Color:
    <select name=”color” size=”1”>
    <option value=”light”> light </option>
    <option value=”amber”> amber </option>
     <option value=”brown”> brown </option>
      <option value=”dark”> dark </option>
      </select>
    <br><br>
    <center>
    <input type="submit">
     </center>
     </form>
     </body>
     </html>

BeerSelect.java

     import javax.servlet.*;
       import javax.servlet.http.*;
        import java.io.*;

        public class BeerSelect extends HttpServlet 
        {
          public void doPost(HttpServletRequest request,
          HttpServletResponse response)
            throws IOException, ServletException {
           response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            out.println("Beer Selection Advice<br>");
            String c = request.getParameter("color");
            out.println("<br>Got beer color " + c);
         }
          }

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>headfirstdemo</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>BeerSelect</display-name>
    <servlet-name>BeerSelect</servlet-name>
    <servlet-class>BeerSelect</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>BeerSelect</servlet-name>
    <url-pattern>/selectBeer.do</url-pattern>
  </servlet-mapping>
</web-app>

【问题讨论】:

    标签: java eclipse tomcat servlets


    【解决方案1】:

    我相信您已经在 java 包中指定了您的 servlet。如果是这样,您还必须在 servlet 映射中指定该包路径。

    <servlet>
        <description></description>
        <display-name>BeerSelect</display-name>
        <servlet-name>BeerSelect</servlet-name>
        <servlet-class>[specify your package].BeerSelect</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>BeerSelect</servlet-name>
        <url-pattern>/selectBeer.do</url-pattern>
      </servlet-mapping>
    

    例如:org.headfirst.example.BeerSelect

    【讨论】:

    • 但我使用的是默认包,因此我认为这不是问题
    • 好的,那就试试最佳实践吧。为您的课程创建一个包并将其添加到 web.xml 并尝试。让我知道结果。
    猜你喜欢
    • 2014-06-03
    • 2021-11-14
    • 2017-12-02
    • 2016-07-02
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多