如何安装 Java EE SDK?

问题描述

我正在介绍有关 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’>");

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

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

错误

解决方法

问题在于您使用的是 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 命名空间(在您的情况下,包 jakarta.servletjakarta.servlet.http)。

Tomcat 10 download page 所述:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...