メインコンテンツまでスキップ
に最終更新

VSCode を使用した FE 開発環境のセットアップ

このドキュメントでは、開発マシン、WSL、または Docker 上で、VSCode を使用して Doris FE 開発環境をセットアップする方法を説明します。VSCode を使用する開発者は、Remote 拡張機能を利用してリモートで開発やデバッグを行えます。

1. 前提条件​

コンポーネント必要なバージョン用途
JDK11 以降(Java 拡張機能に必要)。コンパイルには JDK 8 も使用可能両方をインストールし、設定で切り替える
VSCode最新の安定版エディター
Extension Pack for Java最新版Java 言語のサポート
Remote 拡張機能Remote - SSH / Remote - WSL / Remote - Containersリモート開発

JDK 11 と JDK 8 を、~/lib などの独立したディレクトリにそれぞれインストールすることを推奨します。前者は IDE 拡張機能、後者はソースコードのコンパイルに使用します。

2. ソースコードのクローンと開き方​

  1. GitHub からソースコードをダウンロードします。

    git clone https://github.com/apache/doris.git
  2. VSCode で、リポジトリのルート全体ではなく、ソースツリー内の fe ディレクトリを開きます。

3. VSCode の設定​

settings.json を fe/.vscode/ に作成し、Java ランタイムと Maven のパスを設定します。

設定項目説明
java.configuration.runtimes利用可能な JDK の一覧を登録し、Java 拡張機能がプロジェクトごとに使用する
java.jdt.ls.java.homeJDK 11 以降のディレクトリを指定する(vscode-java 拡張機能自体が使用)
maven.executable.pathmaven-language-server 拡張機能が使用するローカルの Maven 実行ファイルを指定する

例:

{
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/!!!path!!!/jdk-1.8.0_191"
},
{
"name": "JavaSE-11",
"path": "/!!!path!!!/jdk-11.0.14.1+1",
"default": true
}
],
"java.jdt.ls.java.home": "/!!!path!!!/jdk-11.0.14.1+1",
"maven.executable.path": "/!!!path!!!/maven/bin/mvn"
}

4. FE のコンパイル​

コンパイルの詳しい手順については、以下を参照してください。

5. リモートデバッグの設定​

VSCode から FE をリモートデバッグするには、FE の起動時に次の JDWP パラメーターを追加します。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

これを行うには、doris/output/fe/bin/start_fe.sh を編集し、$JAVA $final_java_opt の後に上記のパラメーターを追加します。

JDWP パラメーター値説明
transportdt_socketソケット転送を使用する
serveryデバッグサーバーとして起動し、デバッガーの接続を待つ
suspendn起動時に中断せず、通常どおり実行する
address5005待ち受けポート。変更可能

FE を起動した後、VSCode の Java Debug 拡張機能で host:5005 に Attach すると、ブレークポイントを使ってデバッグできます。

6. よくある質問(FAQ)​

Q1: Java 拡張機能で JDK のバージョンが低すぎると報告される​

java.jdt.ls.java.home には JDK 11 以降を指定する必要があります。コンパイルに JDK 8 を使用する場合でも、拡張機能自体の実行には JDK 11 以降が必要です。

Q2: Maven のタスクが失敗する、または mvn が見つからない​

maven.executable.path が有効な mvn 実行ファイルを指していることを確認するか、システムの PATH に追加してください。

Q3: リモートデバッグに接続できない​

  • FE プロセスが JDWP パラメーターを実際に読み込んでいることを確認します(ps -ef | grep java でコマンドラインを確認します)。
  • address で指定したポートがファイアウォールでブロックされていないことを確認します。
  • suspend=y を使用すると、FE はデバッガーの接続を待って停止します。suspend=n に変更するか、デバッガーから先に接続してください。