IntelliJ IDEA 2025.3 Help

教程:您的第一个 Jakarta EE 应用程序

本教程介绍了如何在 IntelliJ IDEA 中创建一个简单的 Jakarta Enterprise Edition (EE) Web 应用程序。 该应用程序将包括一个显示 您好,世界! 的JSP页面和一个链接到显示 您好,世界! 的Java servlet。

您将使用 Web 应用程序模板创建一个新的 Jakarta EE 项目,告诉 IntelliJ IDEA 您的应用服务器位于何处,然后使用运行配置来构建构件,启动服务器,并将构件部署到服务器上。

您将需要以下内容:

相关插件

默认情况下, IntelliJ IDEA Ultimate 会捆绑并启用以下必需插件。 如果某些功能无法正常运行,请确保以下插件已启用:

  • Jakarta EE 平台

  • Jakarta EE:应用服务器

  • Jakarta EE:Web/Servlets

  • Tomcat 和 TomEE

按照 安装插件 中的说明安装并启用 GlassFish 插件。

Java SE Development Kit (JDK) 版本 1.8 或更高版本

您可以按照 Java Development Kit (JDK) 中的说明直接从 IntelliJ IDEA 获取 JDK,或手动下载并安装,例如: Oracle JDKOpenJDK

Tomcat

Tomcat 应用服务器版本 7 或更高版本。

GlassFish

GlassFish 应用服务器版本 4.0 或更高版本。 您可以从 官方存储库 获取最新版本。 对于本教程而言, Web Profile 子集已足够。

Web 浏览器

您将需要一个 Web 浏览器来查看您的 Web 应用程序。

创建一个新的 Jakarta EE 项目

IntelliJ IDEA 包含一个专门的向导,用于基于各种 Jakarta EE 实现创建 Jakarta Enterprise 项目。 在本教程中,我们将创建一个简单的 Web 应用程序。

  1. 在主菜单中,前往 文件(F) | 新建(N) | 项目

  2. 新建项目 对话框中,选择 Jakarta EE

  3. 为您的项目输入一个名称: JakartaEEHelloWorld

  4. 请选择 Web 应用程序 模板, Maven 作为构建工具,并使用 Oracle OpenJDK 17 作为项目 SDK. 暂时不要选择或添加应用服务器,我们稍后再进行。

    单击 下一步(N) 以继续。

    新建 Java 企业项目向导
  5. 版本(V) 字段中,选择 Jakarta EE 11 ,因为本教程使用的 Tomcat 11 与其兼容。

    版本(V) 字段中,选择 Jakarta EE 9.1 ,因为本教程使用的 GlassFish 6.2.5 与其兼容。

    依赖项 列表中,您可以看到该web应用程序模板仅包含 Servlet 框架下的 规范

    新建 Java 企业项目向导
    新建 Java 企业项目向导
  6. 点击 创建

探索默认项目结构

IntelliJ IDEA 会创建一个包含一些样板代码的项目,您可以成功构建并部署。

  • pom.xml 是包含 Maven 配置信息的 项目对象模型 ,其中包括构建项目所需的依赖项和插件。

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>JakartaEEHelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <name>JakartaEEHelloWorld</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>21</maven.compiler.target> <maven.compiler.source>21</maven.compiler.source> <junit.version>5.11.0-M2</junit.version> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.4.0</version> </plugin> </plugins> </build> </project>
    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>JakartaEEHelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <name>JakartaEEHelloWorld</name> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>11</maven.compiler.target> <maven.compiler.source>11</maven.compiler.source> <junit.version>5.9.2</junit.version> </properties> <dependencies> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build> </project>
  • index.jsp 是当您访问根目录 URL 时打开的应用程序起始页面。 它渲染了 Hello World! 并链接到 /hello-servlet

    <%@ 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> <p/> <a href="hello-servlet">Hello Servlet</a> </body> </html>
  • HelloServlet 类扩展了 HttpServlet 并注解了 @WebServlet。 它处理对 /hello-servlet 的请求:GET 请求返回呈现 Hello World! 的 HTML 代码。

    package com.example.demo; import java.io.*; import javax.servlet.http.*; import javax.servlet.annotation.*; @WebServlet(value = "/hello-servlet") 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() { } }

使用 项目 工具窗口浏览并打开您项目中的文件,或按 Ctrl+Shift+N ,然后输入文件名。

配置应用服务器

让 IntelliJ IDEA 知道 GlassFish Tomcat 应用服务器的位置。

  1. Ctrl+Alt+S 打开设置,然后选择 构建、执行、部署 | 应用服务器

  2. 单击 "添加"按钮 并选择 GlassFish 服务器Tomcat

  3. 指定 GlassFish Tomcat 服务器安装位置的路径。 IntelliJ IDEA 会适当地检测并设置名称和版本。

    GlassFish 应用服务器配置
    Tomcat 应用服务器配置

创建运行配置

IntelliJ IDEA 需要一个运行配置来构建工件并将其部署到您的应用服务器。

  1. 在主菜单中,转到 运行 | 编辑配置(E)

  2. 运行/调试配置 对话框中,点击 "添加"按钮 ,展开 GlassFish 服务器Tomcat 服务器 节点,并选择 本地

  3. 修复出现在运行配置设置对话框底部的任何警告。

    运行配置警告

    很可能,您需要修复以下问题:

    • 服务器 选项卡上,将 服务器域名 设置为 domain1

    • 部署 选项卡上,添加您想要部署的 artifact: JakartaEEHelloWorld:war exploded

  4. 服务器 选项卡上,将 URL 设置为指向 根资源

    http://localhost:8080/JakartaEEHelloWorld_war_exploded/
    http://localhost:8080/JakartaEEHelloWorld-1.0-SNAPSHOT/
    GlassFish 运行配置已完成
    Tomcat 运行配置已完成
  5. 点击 确定(O) 以保存运行配置。

  6. 要运行配置,请按 Alt+Shift+F10 并选择创建的应用服务器配置。

    或者,如果您已在顶部的主工具栏中选择了运行配置,您可以在主工具栏中点击 运行图标 ,或按 Shift+F10 来运行它。

此运行配置会构建构件,然后启动 GlassFish Tomcat服务器,并将构件部署到服务器。 您应该会在 服务 工具窗口中看到相应的输出。

已在“服务”工具窗口中启动 GlassFish 服务器并部署应用程序
已在“服务”工具窗口中启动 GlassFish 服务器并部署应用程序

完成后,IntelliJ IDEA 会在您的 Web 浏览器中打开指定的 URL。

在 Web 浏览器中显示的已部署应用程序输出

如果没有,请尝试自行打开 URL: http://localhost:8080/JakartaEEHelloWorld_war_exploded/ http://localhost:8080/JavaEEHelloWorld-1.0-SNAPSHOT/

修改应用程序

每当您更改应用程序的源代码时,您可以重新启动运行配置以查看更改。 但这并不是总是必要的,特别是当您无法重新启动服务器时。 大多数更改都很小,无需重新构建构件、重新启动服务器等。 让我们更改应用程序的 JSP 页面。

  1. 打开 index.jsp 并将问候语从 Hello World 更改为 更好的问候

  2. 服务 工具窗口中,点击 更新应用程序按钮 或按 Ctrl+F10

  3. 更新(U) 对话框中,选择 更新资源(U) ,因为 JSP 页是静态资源。 点击 确定

  4. 请在您的网络浏览器中刷新应用程序 URL 以查看新字符串: 更好的问候。

您可以在运行配置设置中配置默认更新操作:在主菜单中转到 运行 | 编辑配置(E)。 在 服务器 选项卡下更改 执行“更新”操作时(U) 选项的 GlassFishTomcat 运行配置设置。

在 GlassFish 运行配置中配置应用更新操作
在 GlassFish 运行配置中配置应用更新操作

使用 切换出IDE 时(F) 选项,当您从 IntelliJ IDEA 切换焦点时,您可以配置更新资源和类,而无需重新部署和重新启动服务器。 在这种情况下,您甚至不需要使用 更新应用程序 操作,只需切换到您的网页浏览器并刷新页面。

将应用程序打包成 WAR 并部署在运行中的服务器上

在先前的步骤中,我们使用解压缩的构件部署了应用程序,所有文件都是未压缩的。 这在开发的初始阶段非常有用,因为它允许您在不重新部署的情况下更新各个资源和类。 当您对自己的应用程序满意并准备通过部署到远程服务器与他人共享时,最好使用压缩的 web archive (WAR) 格式。

让我们添加一个 远程 GlassFish远程 Tomcat 运行配置,以将 WAR artifact 部署到正在运行的服务器。 这假设您没有终止之前步骤中正在运行的服务器。

  1. 在主菜单中,前往 运行 | 编辑配置(E)

  2. 运行/调试配置 对话框中,点击 "添加"按钮 ,展开 Glassfish 服务器Tomcat 节点,并选择 远程

  3. 将此运行配置的名称更改为区别开来,例如: 远程 GlassFish 6.2.5远程 Tomcat 10.1.5

  4. 打开 部署 选项卡,点击表格上方的 "添加"按钮 以部署,并选择 工件。 选择 JakartaEEHelloWorld:war 工件并点击 确定

    远程 GlassFish 运行配置工件部署
    远程 Tomcat 运行配置工件部署
  5. 点击 确定 保存远程运行配置。

  6. 打开 index.jsp 并将问候语更改为 来自 WAR 的问候!

  7. 在主工具栏中选择新的运行配置,然后点击 运行图标 或按 Shift+F10

    选择器中的远程 GlassFish 运行配置

    选择器中的远程 GlassFish 运行配置

新的配置构建 WAR 工件并将其部署到运行中的服务器。 刷新 URL 查看新的问候语: 来自 WAR 的问候!

故障排除

与 Jakarta EE 的兼容性

如果您得到一个 404 错误,请确保在 创建项目 时,选择了与您的 GlassFish 版本兼容的 Jakarta EE 规范版本。

有关详细信息,请参阅 GlassFish 版本兼容性

无法连接到 Tomcat

如果您在尝试将应用程序部署到远程 Tomcat 服务器时看到类似 无法连接到 localhost:1099 的错误消息,请尝试以下步骤:

  • 请确保 Tomcat 服务器正在运行。 例如,启动 上面描述的本地 Tomcat 运行配置。

  • 在配置 JMX 身份验证或(如果不是生产环境)禁用它之前,运行服务器时,请传递 -Dcom.sun.management.jmxremote.authenticate=false VM 选项,然后部署应用程序。

较早的 IntelliJ IDEA 版本

如果您使用的是 IntelliJ IDEA 版本 2020.2.2 或更早版本, 新建项目 向导将不会添加 Tomcat 所需的所有必要依赖项。 在这种情况下,打开 pom.xml 并添加以下依赖项:

<dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.31</version> </dependency> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> <version>2.31</version> </dependency>

例如,在 2020.2.3 版本中,生成的 pom.xml 如下所示:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>RestTomcatHelloWorld</artifactId> <version>1.0-SNAPSHOT</version> <name>RestTomcatHelloWorld</name> <packaging>war</packaging> <properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <junit.version>5.6.2</junit.version> </properties> <dependencies> <dependency> <groupId>javax.ws.rs</groupId> <artifactId>javax.ws.rs-api</artifactId> <version>2.1.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.31</version> </dependency> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.31</version> </dependency> <dependency> <groupId>org.glassfish.jersey.inject</groupId> <artifactId>jersey-hk2</artifactId> <version>2.31</version> </dependency> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.31</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.0</version> </plugin> </plugins> </build> </project>

接下来做什么?

在本教程中,您将创建并部署一个简单的 Jakarta EE 应用程序。 为了扩展这些知识,您可以按照 教程:您的第一个 RESTful web service 所述创建一个 RESTful web service。

最后修改日期: 2025年 12月 2日