ここで言う共存は単一プロジェクト内の共存ではなく、OS上での共存。
例えば、Java11とJava17を楽に切り替えて動作検証テストしたいとき。
システム環境変数でJDKを設定するとバージョン切り替える毎に再設定し端末再起動が必要になってしまう。
vscode(windows版)とlinuxの2パターンについて記載する。
VSCode(Windows)
ワークスペースで使い分ける方法。
VScodeの設定画面からユーザータブではなくワークスペースタブ側にJava Homeを設定する。
なお、ユーザー側よりワークスペース側の設定の方が優先度が高い。
settings.jsonに設定される内容
(Java11のワークスペース)settings.json
"java.jdt.ls.java.home":"C:〜11〜"
(Java17ワークスペースの)settings.json
"java.jdt.ls.java.home":"C:〜17〜"
※VSCodeでJavaHomeを設定していなければOSのシステム環境変数が使用される。
※VSCodeのバージョンが古い場合のプロパティ名は"java.home"になる。
Linux
セッション毎で使い分ける方法。
ウィンドウ1
export JAVA_HOME='~11~'
ウィンドウ2
export JAVA_HOME='~17~'
パスの設定確認
echo $JAVA_HOME
パスが表示されれば設定は成功している。
セッション切れても設定維持したい場合は
.bashrcファイルに記載する。
なければviで作成する。
vi ~/.bashrc
.bashrc
export JAVA_HOME='~11~'
#1つしか設定できないので17はコメントアウト
#export JAVA_HOME='~17~'
#おまけ
#エイリアスで入力を簡易化
alias java11='export JAVA_HOME='~11~''
alias java17='export JAVA_HOME='~17~''
補足
.bashrcを新規作成した場合、閉じて再立ち上げると.bash_profileが作成される。
.bash_profileはログイン時のみ実行され、.bashrcを読み込む。.bashrcはシェル実行都度読まれる。
参考: