1

我正在讨论大学的一章,我正在研究 servlet。这本书要求我复制一段代码并在cmd中运行。它不会在 cmd 中运行,并且这一章模糊地解释了我如何安装 Java EE。这是代码和错误:

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

public class NameServlet extends HttpServlet {
    
    public static void main(String[] args) {

    }

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

        out.println("<html>");
        out.println("<body style=’background-color: lightyellow’&gt;");

        String name = "Wow, this servlet works great!!";
        out.println("Name: " + name);
        out.println("</body>");
        out.println("</html>");
        out.close();
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        doGet(request, response);
    }
}

错误:

4

1 回答 1

5

问题是您使用的是 Apache Tomcat 10,它使用最新版本的 Jakarta EE(版本 9,Java EE 8 的后续版本)。Jakarta EE 9 的重大变化是将其包的命名空间javax.*jakarta.*.

您要么需要:

  • 使用 Apache Tomcat 9(或更早版本,或其他仍使用 Java EE 8 或更早版本和javax.*命名空间的 Java EE servlet 容器),或
  • 切换到使用新的 Jakarta EE 命名空间(在您的情况下是 packages jakarta.servletjakarta.servlet.http)。

Tomcat 10 下载页面所述:

Tomcat 10 及更高版本的用户应该知道,由于作为 Java EE 转移到 Eclipse 基金会的一部分而从 Java EE 转移到 Jakarta EE,所有已实现 API 的主要包javax.*已从jakarta.*. 这几乎肯定需要更改代码以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 10 及更高版本。

于 2021-03-20T16:30:40.360 回答