はじめに
IntelliJでkotlinのコードを書いてる時に環境変数の扱いでハマったので備忘録代わりに書きます。
ちなみに環境はMacです。
ハマった経緯
kotlinで環境変数を使いたかったので
ターミナルから環境変数の追加を以下のように行いました。
nano ~/.zshrc
export test=koike
testが環境変数名でkoikeが値です。
環境変数設定後
source ~/.zshrc
上記のコマンドで設定を反映させました。
設定反映できたと思ったので
kotlinコード内で
println(System.getenv("test"))
上記のように環境変数の取得を行おうとしたのですが
出力されたのは 「null」 ...
あれ?と思い
ターミナルで以下コマンドで環境変数の一覧を取得
printenv
すると、しっかり test=koikeが反映されています。
なぜだ!!!!なぜkotlinから環境変数が取得できない!!!
原因
IntelliJの環境変数の読み込みタイミングが原因でした。
どうやらIntelliJは環境変数の読み込みを起動時に行なっているっぽいです。
環境変数をターミナルから設定した後は IntelliJを完全に終了させたのち再度起動するようにしましょう!
※IntelliJ内のターミナル経由で環境変数を設定しても同様です。
他にも対応策あれば教えてください。
まとめ
この単純な問題に気づくのに時間が掛かってしまいましたが
こんなことで時間を無駄にしたとは思わず、いい気付きを得られたとポジティブに考えたいと思います。