【问题标题】:Tomcat - Error instantiating servlet class - intelijTomcat - 实例化 servlet 类时出错 - intellij
【发布时间】:2021-11-14 13:46:18
【问题描述】:

在 intelij 中创建项目并启动 Tomcat 服务器后,我成功获得了 index.jsp 页面。

但是当我尝试打开 HelloServlet.java 时,我得到:“Error instantiating servlet class”错误。

然后当我重新加载此页面时,我收到 404 错误:“源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。”

这段代码肯定可以在另一台装有 Tomcat 的电脑上运行,但在我的电脑上不行。

HelloServlet.java

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

public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }

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

        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>" + message + "</h1>");
        out.println("</body></html>");
    }

    public void destroy() {
    }
} 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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_4_0.xsd"
         version="4.0">

    <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>
</web-app>

index.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
  <head>
    <title>JSP - Hello World</title>
  </head>
  <body>
    <h1><%= "Hello World!" %></h1>
    <br/>
    <a href="HelloServlet">Hello Servlet</a>
  </body>
</html>

项目结构

|____resources
|____webapp
| |____index.jsp
| |____WEB-INF
| | |____web.xml
|____java
| |____HelloServlet.java

我应该怎么做才能解决我的问题?

【问题讨论】:

标签: java tomcat intellij-idea


【解决方案1】:

我解决了安装 Tomcat 8.5.70 的问题

我不知道 Tomcat 10 出了什么问题,但 8.5.70 在同一个项目中运行良好。


更新:

问题在于进口。 Tomcat 10 使用 jakarta.* 包而不是 javax.*.

感谢大家的建议。

【讨论】:

  • Tomcat 10 没有“错误”。Tomcat 10 使用 jakarta.* 包而不是 javax.*。在所有其他方面,Tomcat 10 与 Tomcat 9 相同,都是并行开发,相同的功能,相同的性能。阅读 Arjan Tijms 的 Tomcat VersionsTransition from Java EE to Jakarta EE,以及 many other articles
  • Remark that "javax.servlet.* doesn't work more in Servlet 5.0 or newer"BalusC's answer 对我已经引用的问题的第四段。
猜你喜欢
  • 2015-01-02
  • 2016-06-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2014-07-03
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多