2025年版!VS Code で Java 開発環境を構築する
Back to Topはじめに
#時代の流れは速いもので、「2024年版!VS Code で Java 開発環境を構築する」で、VS CodeのJava環境構築が紹介されてからのいくつかの改善がなされました。今回はそれらを紹介します。
Extension Pack for Java Auto Configの利用
#今回も結論から言ってしまうと 「Extension Pack for Java Auto Config を入れましょう」で終わりです。
Extension Pack for Java Auto Config - Visual Studio Marketplace
この拡張パックの内訳は以下のようになっています。
- JDKの自動構成
- Extension Pack for Java - Visual Studio Marketplace
- Spring Boot Extension Pack - Visual Studio Marketplace
- 追加の拡張
素のVS Codeに「Extension Pack for Java Auto Config」を入れるだけで、Javaアプリor SpringBootアプリを作るための準備はほぼ完了です。言ってしまえばVS Code版「Pleiades All in One」という内容になっています(実際にこの拡張はPleiadesチームによって開発されています)。
「Extension Pack for Java」と「Spring Boot Extension Pack」は2024年版で解説されているので説明は割愛します。
JDKの自動構成
#この拡張のメインの機能です。この拡張は内部に複数のJDK(少なくとも 3 つの LTS バージョンと最新バージョン)を含んでいます。フォルダを開いたときにMavenプロジェクトなどが含まれている場合は、最適なJDKを使うように自動的に構成されます。またmavenやgradleも含まれているので、これらをインストールしなくても開発を始めることができます。
VS Codeからターミナルを起動するときも、各JDK環境に合わせたターミナルを立ち上げることができます。
Windows環境での日本語文字化け対策
#Windows環境でJavaアプリを実行するとターミナルへのログの出力が文字化けすることがあるので、対策をします。
JDK18以降を使っている場合
#JDK18以降のデフォルトの文字コードはUTF-8です。一方でターミナルのデフォルトの文字コードはMS932のため文字化けが起こることがあります。
これを解消するには、ターミナルの文字コードを強制的にUTF-8にします。
レジストリエディタを立ち上げて
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
を開きます。
ここに以下のような値を作成します。
- 値の名前:Autorun
- 値のデータ:chcp 65001 > nul
最後の部分は「null」ではなく「nul」であることに気を付けてください。
JDK17以前を使う場合
#上記の設定をしたままでJDK17以前を使うと、JDKの文字コードはMS932で、ターミナルはUTF-8なので文字化けが起こります。
そこで以下のような環境変数を設定してJDKの文字コードをUTF-8にします。
JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
追加の拡張
#Extension Pack for Java Auto Configが追加するその他の拡張について見ていきます。
XMLの入力支援をしてくれます。例えば、タグの上にマウスカーソルをホバーさせるとスキーマにかかれたドキュメンテーションを表示するなどの機能があります。
ソースコード中のTODOやFIXMEを一覧表示してくれます。
HTMLやCSSなどの確認に便利な簡易サーバーです。
HTMLファイルを開いた状態で、画面右下の「Go Live」を押すと、ブラウザでHTMLを表示してくれます。
Live Reload機能によりHTMLを書き換えるとリロードなしでブラウザに修正が繁栄されます。
さいごに
#Extension Pack for Java Auto Configによって、これ1つインストールするだけで、Javaアプリ/SpringBootアプリの開発環境が整うのは便利になったと思います。
EclipseやIntelliJ IDEAなどの統合環境に比べると機能面で劣るところもあります。一方、VS Codeは無料で動作が軽く、しかもAI対応が統合環境よりも早いことを考えると、Java開発環境としてVS Codeを使うのもありだろうと思います。