バージョンは面倒くさい
ライブラリや環境は、バージョンに依存していることがよくあります。
今回はそんなバージョン問題のjavaのお話をしたいと思います。
困った問題
開発において、javaのバージョン指定をされることがあります。
プロジェクトAは、ちょっと昔から継続しているプロジェクトなのでjava17だったり
新しいプロジェクトBは、新規なので出来るだけ新しいバージョンにしておこうということでjava21だったりするわけですね。
ここで問題になるのが、環境で使用できるjavaのバージョンは1つのみという事です。
このケースだとプロジェクトBの開発の為、21にするとプロジェクトAのバグ修正が入ると17に戻す必要があったりします。
何が面倒くさいかというと、java_homeとpathを毎回変更しないといけない事です!
当然こんな面倒くさい作業は誰かがいい感じで楽にしてくれるものを作ってくれているはずです。
切り替えを楽にしてくれるもの
その名は、「jababa」さん
nvm風に切り替えられるものを探していて、これにしたんですがnvmに影響を受けて作ったみたいです。
似ていて当前ですねw
さて、これで単純に切り替えられたのなら記事にしなかったんですが、この後問題が発生!?
java21がリストにない!!
確認してみると、java21がない。
調べた限り、更新方法も記載がみつからなかったのですがソースを見ると環境変数JABBA_INDEXのURLからリストを取得している様なのです。
じゃあ、このリストに欲しいものがあればいけるのではないかと調べるとこちらの方が新しい互換リストを公開されていたのでこちらを使わせてもらうようにしました。
このリストの中身が安全かどうかは、必ずご自分でご確認ください。
$env:JABBA_INDEX = "https://raw.githubusercontent.com/typelevel/jdk-index/refs/heads/main/index.json"
上記、環境変数を設定すれば新しいパッケージが表示されるのでそちらを指定して、インストールすることができます。
結論
jababaで非対応なバージョンを入れたい場合は、環境変数「JABBA_INDEX」にリストのURLを設定して使用する!
外部サーバーに自分用のリストをアップするのが面倒くさい場合は、以下のように簡易サーバーを起動して
python -m http.server --directory path/to/directory 9000
環境変数をローカルに指定して実行するのでも良いと思います。
$env:JABBA_INDEX = "http://localhost:9000/index.json"