繁体   English   中英

在Tomcat 8.0.30上部署Servlet

[英]Deploying Servlet on Tomcat 8.0.30

我正在尝试将已编译的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.
  }
}

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

阅读Tomcat文档,了解如何部署应用程序

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

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

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

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

有许多依赖Manager Web应用程序执行部署的方法。 Apache Tomcat提供了Apache Ant构建工具的任务。 Apache Tomcat Maven插件项目提供了与Apache Maven的集成。 还有一个名为Client Deployer的工具,可以从命令行使用它,并提供其他功能,例如编译和验证Web应用程序以及将Web应用程序打包到Web应用程序资源(WAR)文件中。

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

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

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

得到它了。 我创建的类文件夹为“C‘lasses Tomcat所在预计’C” lasses。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM