在Tomcat 8.0.30上部署Servlet

时间:2016-01-31 10:53:50

标签: java tomcat servlets

我正在尝试将已编译的Servlet类部署到Apache Tomcat服务器8.0.30上。

但我得到以下例外:

javax.servlet.ServletException: Error instantiating servlet class HelloWorld

   java.lang.ClassNotFoundException: HelloWorld

我的tomcat webapps/ROOT/文件夹不包含classes文件夹,所以我创建了一个并将HelloWorld.class复制到其中。我在web.xml中添加了以下几行:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
<servlet>
   <servlet-name>HelloWorld</servlet-name>
   <servlet-class>HelloWorld</servlet-class>
 </servlet>

<servlet-mapping>
   <servlet-name>HelloWorld</servlet-name>
   <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>

谁能告诉我我做错了什么?

@wero:这是我的HelloWorld.java的内容:

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// Extend HttpServlet class
public class HelloWorld extends HttpServlet {

  private String message;

  public void init() throws ServletException
  {
      // Do required initialization
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // Set response content type
      response.setContentType("text/html");

      // Actual logic goes here.
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }

  public void destroy()
  {
      // do nothing.
  }
}

3 个答案:

答案 0 :(得分:0)

启动tomcat后,您的应用中没有class个文件。 Tomcat在启动时部署期间加载类,或者如果您在运行时手动部署它。之后应该重新加载上下文。您只能将类复制到tomcat webapps文件夹而不加载它们。

阅读Tomcat docs how to deploy your application

  

部署是用于安装Web的过程的术语   应用程序(第三方WAR或您自己的自定义Web   应用程序)到Tomcat服务器。

     

Web应用程序部署可以通过多种方式完成   在Tomcat服务器中:

     
      
  • 静态(在Tomcat启动之前设置Web应用程序)
  •   
  • 动态(通过直接操作已部署的Web应用程序(依赖于自动部署功能)或使用远程操作   Tomcat Manager Web应用程序)
  •   
     

Tomcat Manager是一个可以交互使用的Web应用程序   (通过HTML GUI)或以编程方式(通过基于URL的API)进行部署和   管理Web应用程序。

     

有许多方法可以执行依赖于的部署   经理网络应用程序Apache Tomcat为Apache Ant提供任务   构建工具。 Apache Tomcat Maven插件项目提供集成   与Apache Maven。还有一个名为Client Deployer的工具,   可以从命令行使用,并提供额外的   诸如编译和验证Web应用程序之类的功能   以及将Web应用程序打包成Web应用程序资源(WAR)   文件。

答案 1 :(得分:0)

您需要将文件放入正确的位置。需要将Java类文件放入WEB-INF / classes:

webapps/ROOT/WEB-INF/web.xml
webapps/ROOT/WEB-INF/classes/HelloWorld.class

然后启动Tomcat并查看Tomcat日志中是否存在错误。

答案 2 :(得分:0)

知道了。我创建的classes文件夹是&#34; C &#34;其中tomcat需要&#34; c &#34; lasses。