[ 小ネタ ] OpenJDK入れ直そうとしたらコケた話
sbt consoleが文字入力できなくなていたので、原因を探りつつ
AdoptOpenJDK -> OpenJDK(aptで普通に入るやつ)に戻そうとしたらコケた話をメモ書きしようと思います。
ちょっと前のことなので、詳細についてはうろ覚えの部分もあります。あしからず。
いきさつ
普通にsbt run, compile, cleanなどでScalaコードを動作させることに関しては問題ありませんでした。
一方で、ローカルでsbtで対話コンソールを触ろうとしていたところ、sbt consoleで立ち上げたコンソールで文字が入力できない現象に遭遇しました。
有力候補であった「AdoptOpenJDK」というJDKを入れていたのですが、普通のOpenJDKでないとsbt consoleが正常に動作しないのかもと思い、急遽戻してみることにしました。
$ sudo add-apt-repository -r ppa:rpardini/adoptopenjdk
$ sudo rm rpardini-ubuntu-adoptopenjdk-bionic.list
$ sudo apt purge adoptopenjdk-8-jdk-hotspot-installer
$ sudo apt purge adoptopenjdk-8-jdk-hotspot-set-default
$ sudo apt autoremove -y
$ sudo apt update
$ sudo apt install openjdk-8-jdk
これでもとに戻ったと思ったのですが、
$ java -version
Command 'java' not found, but can be installed with:
sudo apt install default-jre
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-11-jre-headless
のように出力され、再インストールがうまくいっていない様子。
$ which java
で探すも、ヒットなし。
念のためもう一度
$ sudo apt update
$ sudo apt install openjdk-8-jdk
では
「既ににインストール済みです」
との表記。ぐぐってみると下記サイトで思い当たることがありました。
https://stackoverflow.com/questions/60385151/ubuntu-18-04-java-command-not-found-despite-being-installed
もしかして、過去にインストールしたOpenJDKの別バージョンが残っていてうまく切り替えられていないのかも?と思い
$ sudo apt list --installed
で確認したところ、たしかに残っていました。
(
そういえば、過去にOpenJDK11も入れた記憶がある…
しかし、まさかこんな挙動をするとは。
)
早速残りのJDKをすべてアンインストールし、再インストール。
$ sudo apt purge openjdk-11-jdk openjdk-11-jre openjdk-11-jre-headless -y
$ sudo apt autoremove -y
$ sudo apt install openjdk-8-jdk
すると
$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
無事にコマンドが通りました!
そしてここが本当の目的、sbt console。
$ sbt console
scala> :paste
// Entering paste mode (ctrl-D to finish)
object Hello {
def hello(): Unit = {
println("Hello, World!")
}
}
Hello.hello()
// Exiting paste mode, now interpreting.
Hello, World!
object Hello
scala>
よかった!
最後に
普通にコードを動作させることに限ればそのままAdoptOpenJDKでもよかったのかもしれないですが、普通のOpenJDKに戻して期待する結果が得られ、完全に結果論になっているのがモヤモヤしますが結果オーライで良かったです。
ローカルでsbt使いたくてもとのOpenJDKを入れ直しましたが、個人的にAdoptOpenJDKも入れていろいろ試してみたいと思っているので、また別の環境でAdoptOpenJDKのお世話になろうと思います。
サポート期間が比較的長いので、動作環境とかで利用するのもありかもしれないです。
とりあえず、sbt consoleが動くようになってよかった!
おしまい。