IntelliJ IDEA 2026.1 Help

チュートリアル: 最初の Jakarta EE アプリケーション

このチュートリアルでは、IntelliJ IDEA でシンプルな Jakarta Enterprise Edition (EE) Web アプリケーションを作成する方法について説明します。 アプリケーションには、 Hello, World! を表示する単一の JSP ページと、同じく Hello, World! を表示する Java サーブレットへのリンクが含まれます。

Web アプリケーションテンプレートを使用して新しい Jakarta EE プロジェクトを作成し、アプリケーションサーバーの場所を IntelliJ IDEA に伝え、実行構成を使用してアーティファクトをビルドし、サーバーを起動して、アーティファクトをサーバーにデプロイします。

必要なものは次のとおりです。

関連するプラグイン

デフォルトでは、IntelliJ IDEA Ultimate には次の必要なプラグインがバンドルされ、有効になっています。 何かが機能しない場合は、次のプラグインが有効になっていることを確認してください。

  • Jakarta EE プラットフォーム

  • Jakarta EE: アプリケーションサーバー

  • Jakarta EE: Web/ サーブレット

  • Tomcat と TomEE

プラグインをインストールする の説明に従って、 GlassFish プラグインをインストールして有効にします。

Java SE Development Kit (JDK) バージョン 1.8 以降

Java 開発キット (JDK) に従って、IntelliJ IDEA から直接 JDK を取得するか、手動でダウンロードしてインストールできます(例: Oracle JDK または OpenJDK)。

Tomcat

Tomcat(英語) アプリケーションサーバーバージョン 7 以降。

GlassFish

GlassFish(英語) アプリケーションサーバーバージョン 4.0 以降。 公式リポジトリ(英語)から最新リリースを入手できます。 このチュートリアルの目的には、 Web プロファイルサブセットで十分です。

Web ブラウザー

Web アプリケーションを表示するには、Web ブラウザーが必要です。

新しい Jakarta EE プロジェクトを作成する

IntelliJ IDEA には、さまざまな Jakarta EE 実装に基づいて Jakarta Enterprise プロジェクトを作成するための専用ウィザードが含まれています。 このチュートリアルでは、簡単な Web アプリケーションを作成します。

  1. メインメニューで ファイル(F) | 新規(N) | プロジェクト へ移動します。

  2. 新規プロジェクト ダイアログで、 Jakarta EE を選択します。

  3. プロジェクトの名前を入力します: JakartaEEHelloWorld

  4. Web アプリケーション テンプレートを選択し、 Maven をビルドツールとして選択し、プロジェクト SDK には Oracle OpenJDK 17 を使用してください。 後で行います。

    次へ(N) をクリックして続行します。

    新しい Java エンタープライズプロジェクトウィザード
  5. バージョン(V) フィールドでは、このチュートリアルで使用する Tomcat 11 と互換性がある Jakarta EE 11 を選択します。

    バージョン(V) フィールドで、 Jakarta EE 9.1 を選択します。このチュートリアルで使用されている GlassFish 6.2.5 と互換性があります。

    依存関係 リストでは、Web アプリケーションテンプレートに 仕様サーブレット フレームワークのみが含まれていることがわかります。

    新しい 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 に設定します。

    • デプロイ タブで、デプロイするアーティファクトを追加します: JakartaEEHelloWorld:war exploded

  4. サーバー タブで、ルートリソースを指すように URL を設定します。

    http://localhost:8080/JakartaEEHelloWorld_war_exploded/
    http://localhost:8080/JakartaEEHelloWorld-1.0-SNAPSHOT/
    GlassFish 実行構成が完了しました
    Tomcat 実行構成が完了しました
  5. OK(O) をクリックして、実行構成を保存します。

  6. 構成を実行するには、 Alt+Shift+F10 を押して、作成したアプリケーションサーバー構成を選択します。

    あるいは、上部のメインツールバーで実行構成を選択している場合は、メインツールバーの The Run icon をクリックするか、 Shift+F10 を押して実行できます。

この実行構成は、アーティファクトを作成してから、 GlassFish Tomcat サーバーを起動し、アーティファクトをサーバーにデプロイします。 サービス ツールウィンドウに対応する出力が表示されます。

GlassFish サーバーを起動し、サービスツールウィンドウにアプリケーションをデプロイしました
GlassFish サーバーを起動し、サービスツールウィンドウにアプリケーションをデプロイしました

これが完了すると、IntelliJ IDEA は指定された URL を Web ブラウザーで開きます。

Web ブラウザーにデプロイされたアプリケーション出力

そうでない場合は、自分で URL を開いてみてください: http://localhost:8080/JakartaEEHelloWorld_war_exploded/ http://localhost:8080/JavaEEHelloWorld-1.0-SNAPSHOT/

アプリケーションを変更する

アプリケーションのソースコードを変更するたびに、実行構成を再起動して変更を確認できます。 ただし、特にサーバーを再起動できない場合は、これは必ずしも必要ではありません。 ほとんどの変更はマイナーであり、アーティファクトの再構築、サーバーの再起動などは必要ありません。 アプリケーションの JSP ページを変更してみましょう。

  1. index.jsp を開き、グリーティングを Hello World から A better greeting に変更します。

  2. サービス ツールウィンドウで、 The Update Application button をクリックするか、 Ctrl+F10 を押します。

  3. JSP ページは静的リソースであるため、 Update(U) ダイアログで リソースの更新(U) を選択します。 OK をクリックします。

  4. Web ブラウザーでアプリケーションの URL をリフレッシュして、新しい文字列を確認します: A better greeting.

実行構成 設定で、既定のアップデート アクションを設定できます。メインメニューの 実行 | 実行構成の編集(E) に移動してください。 GlassFishTomcat 実行構成 設定の サーバー タブで '更新' アクション時(U) オプションを変更してください。

GlassFish 実行構成でのアプリケーション更新アクションの構成
GlassFish 実行構成でのアプリケーション更新アクションの構成

フレーム切り替え時(F) オプションを使用すると、IntelliJ IDEA からフォーカスを変更するたびにサーバーを再デプロイして再起動することなく、リソースとクラスをリフレッシュするように構成できます。 この場合、 アプリケーションを更新 アクションを使用する必要はなく、Web ブラウザーに切り替えてページをリフレッシュするだけです。

アプリケーションを WAR にパッケージ化し、実行中のサーバーにデプロイする

前の手順では、すべてのファイルが圧縮されていないデプロイされたアーティファクトを使用してアプリケーションをデプロイしました。 これは、再デプロイせずに個々のリソースとクラスを更新できるため、開発の最初の段階で役立ちます。 アプリケーションに満足し、リモートサーバーにデプロイして他のユーザーと共有する準備ができたら、圧縮 Web アーカイブ (WAR) 形式を使用することをお勧めします。

リモートグラスフィッシュリモートトムキャット 実行構成を追加して、WAR アーティファクトを実行中のサーバーにデプロイしましょう。 これは、前の手順で実行中のサーバーを終了していないことを前提としています。

  1. メインメニューで 実行 | 実行構成の編集(E) へ移動します。

  2. 実行/デバッグ構成 ダイアログで、 追加ボタン をクリックし、 GlassFish サーバーTomcat ノードを展開して、 リモート を選択します。

  3. 区別できるように、この実行構成の名前を変更します (例: Remote GlassFish 6.2.5Remote Tomcat 10.1.5)。

  4. デプロイ タブを開き、デプロイするアーティファクトのテーブルの上にある 追加ボタン をクリックして、 アーティファクト を選択します。 JakartaEEHelloWorld:war アーティファクトを選択し、 OK をクリックします。

    デプロイするリモート GlassFish 実行構成アーティファクト
    リモート Tomcat のデプロイする実行構成アーティファクト
  5. OK をクリックして、リモート実行構成を保存します。

  6. index.jsp を開き、グリーティングを Hello from WAR! に変更します。

  7. メインツールバーで新しい実行構成を選択し、 The Run icon をクリックするか、 Shift+F10 を押します。

    セレクターのリモート GlassFish 実行構成

    セレクターのリモート GlassFish 実行構成

新しい構成では、WAR アーティファクトが構築され、実行中のサーバーにデプロイされます。 URL をリフレッシュして、新しい挨拶を確認してください: Hello from WAR!

トラブルシューティング

Jakarta EE との互換性

404 エラーが発生した場合は、 プロジェクトの作成時に GlassFish のバージョンと互換性のある Jakarta EE 仕様バージョンを選択したことを確認してください。

詳細については、 GlassFish のバージョンの互換性(英語)を参照してください。

Tomcat に接続できません

リモート Tomcat サーバーにアプリケーションをデプロイしようとしたときに Unable to connect to the localhost:1099 のようなエラーメッセージが表示された場合は、次の手順を試してください。

  • Tomcat サーバーが実行されていることを確認してください。 例: 上記で説明したローカル Tomcat 実行構成を起動します。

  • JMX 認証を構成するか、(運用環境ではない場合) アプリケーションをデプロイするサーバーを実行する前に -Dcom.sun.management.jmxremote.authenticate=false VM オプションを渡して JMX 認証を無効にします。

古い 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 サービス に従って RESTful Web サービスを作成します。

2026 年 3 月 30 日