Macでexkeymoをビルドするためにopenjdkを使えるようにする
(このページは工事中です)
参照ページ
openjdkを入れる
brew info openjdkで見ると
openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.
と書いてある。これは他のJDKとの混乱を避けるためにデフォルトではPATHや他の環境変数は設定されないということらしい。
ひとまずbrew install openjdkはしておく。
dotfilesを弄ってPATHには/opt/homebrew/opt/openjdk/binを入れておく。
それでexkeymoで./mvnw clean installをやってもまだコンパイラがないと怒られる。
export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
export JAVA_HOME=/opt/homebrew/opt/openjdk
これでやっと./mvnw clean installが通るようになる。
Environment Modulesを入れてopenjdkを設定する
Environment ModulesはTclを使う。MacOS同梱のtclshは古いようなのでbrewからtcl-tkをインストールしておく。
brew install tcl-tk
よく調べると、brewにmodulesという名前でパッケージがある模様。
brew install modules
code:add to .environ
# for Environment Modules
for initdir in /opt/homebrew/opt/modules/init; do
for file in $(ls "$initdir"); do
source "/opt/homebrew/opt/modules/init/$file"
module use "$HOME"/.modulefiles
fi
done
fi
done
code:~/.modulefiles/openjdk
conflict openjdk
setenv JAVA_HOME "/opt/homebrew/opt/openjdk"
# set CPPFLAGS
setenv CPPFLAGS "-I$::env(JAVA_HOME)/include $::env(CPPFLAGS)"
} else {
setenv CPPFLAGS "-I$::env(JAVA_HOME)/include"
Environment Modules使い方
module load openjdk
echo $JAVA_HOME
/opt/homebrew/opt/openjdk
module unload openjdk
echo $JAVA_HOME
(2026-05-25)