0utputab1e

[ 小ネタ ] OpenJDK入れ直そうとしたらコケた話

 2020-12-12
 

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が動くようになってよかった!

おしまい。

 

あわせて読みたい記事

>> Homeに戻る