ブログBlog

    • Java開発環境をVisual Studio Code で整える

    • 2018年6月1日
    • Java
    • VisualStudioCode

Java の開発で使われるIDEには といったものが主流のようですが、ある言語だけ別物の環境で開発することに筆者は少し抵抗がありました。1 2 Java を扱うプロジェクトにジョインするとき、最近流行りの Visual Studio Code(以下 VS Code )は対応してないのか? と少し調べたところ、ここ最近で対応が進んだようで無事セットアップできました。さくさく開発できるので気に入ってます。 今回はそのセットアップ手順を紹介します。

この記事で書くこと

  • Java 開発における VS Code の設定
    • 必要な拡張機能のインストール
    • 設定ファイルの書き方

この記事で書かないこと

環境

macOS High Sierra 10.13 で動作を確認しています。

Visual Studio Code

2015 年に発表されて3 以来爆発的な開発が進められているエディタです。Github を見るとコミット数が 2018/05/28 時点で 33,000 を超えており、1 日あたり 30 コミット以上されている計算です。4 VS Code は単なるエディタとしてだけではなく、コンソールの起動やデバッグなど、IDE としても十分な機能が提供されています。 VS Code の設定や機能拡張は主に
  • JSON 形式で記述された設定ファイルの編集
  • 拡張機能の導入
で行います。本稿でも主にこの手順を紹介していきます。

拡張機能インストール

まず拡張機能をインストールします。 VS Code を起動し、[⌘ + Shift + X](Mac)、もしくは[Ctrl + Shift + X](Windows, Linux)から拡張機能を検索できます。 「java」と入力すると「Java Extension Pack」がヒットするので、この拡張機能をインストールしてください。
画像 : 拡張機能のインストール
Java Extension Pack は下記の拡張機能がパッケージになっており同時にインストールされます。
  • Language Support for Java(TM) by Red Hat
  • Debugger for Java
  • Java Test Runner
  • Maven Project Explorer
Maven や Spring Boot を利用する場合は必要に応じ下記拡張機能も検索してインストールしておきましょう。
  • Maven for Java
  • Spring Boot Extension Pack

設定

JDK の設定

VS Code に JDK の場所を教えます。 まず環境変数 JAVA_HOME の値を確認しましょう。Mac か Linux で Bash を利用しているなら下記コマンドで確認できるはずです。
$ env | grep JAVA
JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
上記の例では/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Homeです。5 Windows のコマンドプロンプト6 なら下記コマンドで確認できます。
>set | findstr JAVA
環境変数JAVA_HOMEを確認できたら、 VS Code 上で [⌘ + ,] (Mac)もしくは [Ctrl + ,] ( Windows, Linux )を押下して設定を開きます。 入力欄から設定項目を検索できるので「javahome」と入力すると、「java.home」の設定が見つかります。「java.home」の左側に出るペンのアイコンをクリックし、「設定にコピー」をクリックすると、設定ファイル settings.json へ編集可能な設定がコピーされるので、先程確認した環境変数 JAVA_HOME の値を設定します。
画像 : settings.json の設定

2020/08/12 追記

vscode-java 0.65.0 より java.configuration.runtimes 設定によって、JDK バージョンごとの設定が可能になりました。 こちら を参考に設定してください。下記は例です。
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-1.8",
            "path": "/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk",
            "default": true // デフォルト指定
        },
        {
            "name": "JavaSE-11",
            "path": "/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk",
        },
    ],

Lombok の導入

Java の開発では Lombok を導入することも多い 7 と思うので使えるようにしておきます。 まず下記から最新版の lombok.jar をダウンロードしましょう。 https://projectlombok.org/download 適当なフォルダへ lombok.jar を配置し、VS Code で lombok.jar を利用したプログラムの参照依存が解決ができるよう設定を行います。8 先程の settings.json に下記設定を追加してください。9
{
  "java.jdt.ls.vmargs": "-javaagent:/path/to/lombok.jar"
}
/path/to/ の部分は lombok.jar を配置したファイルパスに置き換えてください。 ファイルパスに空白が含まれる場合は下記のように、パス全体をエスケープ付きのダブルクォートで囲みましょう。
{
  "java.jdt.ls.vmargs": "-javaagent:\"/spaced path/to/lombok.jar\""
}

ビルドタスクの設定

ビルドの設定はプロジェクトのあるディレクトリ毎に行います。 まずプロジェクトのあるディレクトリを VS Code で開きます。 VS Code が起動済ならメニューの「ファイル」から「開く…」をクリックし、 プロジェクトのあるディレクトリを選択してください。 code コマンド10 を導入していれば、 code {ディレクトリのパス} でも開くことができます。 ビルドの仕方を VS Code へ設定するにはメニューから「タスク」をクリックし、「タスクの構成」を選びます。 初めて設定する場合は、「テンプレートから tasks.json を生成」と出てくるのでそれをクリックし、続けて表示されるビルド設定のテンプレートから任意のものを選びます。 今回は「 Others 」を選択し、手動でビルドの設定をします。
画像 : tasks.json の各テンプレート選択
するとディレクトリに .vscode/tasks.json が作成されてファイルが開かれた状態になりますので、このファイルにビルドの設定をしていきます。 今回は単純に maven を使ったビルド mvn compile だけ行うビルドタスクを作成してみます。 下記のサンプルのように、label の値を build に、 command の値を mvn compile へ変更します。
{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "shell",
      "command": "mvn compile"
    }
  ]
}
tasks.json の設定ができたら、メニューの「タスク」→「タスクの実行…」から実行することができます。 label に設定した値が各タスクの名前に対応しています。
画像 : タスクの実行

デバッガ実行環境の設定

次にデバッグを行うための設定を追加します。 メニューから「デバッグ」→「構成の追加…」を選択すると、ワークスペースに .vscode/launch.json が作成されます。 プロジェクト中ですでに main メソッドをもつクラスがあれば、VS Code は自動で launch.json を設定してくれます。 必要に応じて構成を追加したり、実行時の引数や環境変数などを設定しましょう。 構成のサンプルを示します。
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "Debug (Launch) with Arguments Prompt",
      "request": "launch",
      "cwd": "${workspaceFolder}",
      "console": "internalConsole",
      "stopOnEntry": false,
      "mainClass": "entry.mainApp",
      "args": "--hoge-arg tititata",
      "env": {
        "ENV1": "hogehoge",
        "ENV2": "foobar",
      },
    },
  ]
}
ある程度直感的だとは思いますが、実行させたい main メソッドのあるクラスを mainClass に、 実行時に渡したい引数は args 、実行時の環境変数を env で指定します。 name はデバッガ起動時にどの構成で起動するかを選択する際に表示される名前に相当します(下の画像)。 デバッガの画面を開くには [⌘ + Shift + D] (Mac)もしくは[Ctrl + Shift + D] (Windows, Linux)を押すか、左のバーにある虫のアイコンをクリックしてください。
画像 : デバッグの構成と構成の選択
ここまで設定できたら、起動したいデバッグ構成を選択して緑の三角ボタンを押せば、プログラムとデバッガが起動します。
画像 : デバッガ起動サンプル

その他

お気づきの方もいるとは思いますが、 .vscode/{tasks,launch}.json はただのテキストファイルなので、これをそのままコピーすれば同様の構成を他プロジェクトで使いまわすことができます。 また、 Git リポジトリに含めておけば git clone してビルドからデバッグまで、環境構築用のドキュメントなど使わずともそれぞれ同じ構成で開発ができるので楽ちんですね。
それではよき Java 開発ライフを。

  1. Eclipse、NetBeans は Java 以外の一部開発にも対応しています。↩︎
  2. 筆者が一番好きなIDE(というかエディタ)はVim一択です。↩︎
  3. https://blogs.msdn.microsoft.com/visualstudio/2015/04/29/build-2015-news-visual-studio-code-visual-studio-2015-rc-team-foundation-server-2015-rc-visual-studio-2013-update-5↩︎
  4. Github 上の vscode リポジトリはリリースされている VS Code のベースとはなっているもののライセンスを含め別物です。( https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005 )↩︎
  5. 2020/08/12 追記:vscode-java 0.65.0 より Java 11 のインストールが必須となりました。各バージョンの OpenJDK は こちら からダウンロードできます。↩︎
  6. 筆者は「 Windows キー押下 → [cmd] と入力 → Enter 」と操作して起動するのが鉄板です。↩︎
  7. Lombok は setter や getter といったいわゆる「ボイラープレートコード」を自動付与してビルドしてくれるライブラリです。↩︎
  8. https://github.com/redhat-developer/vscode-java/wiki/Lombok-support↩︎
  9. 2020/08/12 追記:古いバージョンの Java では -Xbootclasspath/a:/path/to/lombok.jar といったオプション指定が必要でしたが、vscode-java 0.65.0 から Java 11 のインストールが必須となった関係で、実質的に不要です。(このオプションを指定するとエラーになります)↩︎
  10. [⌘ + Shift + P] (Mac)か[Ctrl + Shift + P](Windows、Linux)でコマンドパレットを開き、「shell」と検索すると「Shell Command: Install ‘code’ command in PATH」と出るので、それをクリックすることでインストールできます。↩︎

この記事を書いた人 : 上田直諒

一覧へ戻る

開発についてのお問い合わせはこちら

お問い合わせ

JOIN OUR TEAM

積極採用しています。私たちと一緒に働きませんか?