質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.59%

java 8 から adoptopenjdk 8に切り替える方法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 5,746

rev_timo

score 81

タイトルの通りですが、Java 8を使っていまして、adoptOpenjdk8 に切り替えたいです。
os は ubuntu です。

 やったこと

  • adoptOpenjdkはダウンロードして、インストール済みです。
  • /etc/javarcにはJAVA_HOMEをadoptOpenjdkのpathに指定しています。
  • /etc/alternativesにjava のシンボリックリンクをadoptOpenjdkのpathに以下のように変更しています。
java -> /usr/lib/jvm/jdk8u181-b13/bin/java

 確認したところ

java -versionはこんな感じになっています。

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.181-b13, mixed mode)


javac -versionはこんな感じです。

javac 1.8.0_181

 質問

ですので、今のやり方だと本当にこれからコンパイル、実行されるのはadoptOpenjdkになっていますか?
古いjava 8バーションは削除する必要がありますか?

今回は/etc/alternativesにjavaのシンボリックリンクだけをadoptOpenjdkのpathに変更しましたが、そのほか

  • java.1.gz
  • javac
  • javac.1.gz
    ......
    などなどのシンボリックリンクは古いのjava 8 を指定したままですが、それらも全部adoptOpenjdkのpathに変更する必要ありますか。

長くなってしまって申し訳ございませんが、どうぞよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • keicha_hrs

    2018/11/10 00:14

    /etc/alternatives/javaのシンボリックリンクを貼り替えたというのは、何のコマンドを使ったのでしょうか?update-alternativesコマンドですか?

    キャンセル

  • rev_timo

    2018/11/10 14:17

    update-alternativesコマンドでやってみたんですが、古いのjavaしか表示されないので、手動で ln -s コマンドで直接adoptOpenJdkのpathを指定しました

    キャンセル

回答 1

checkベストアンサー

+2

/etc/alternativesにあるシンボリックリンクはupdate-alternativesコマンドで管理されるものなので、lnコマンドで貼り替えるのは良くないと思います。残しているJDKがアップデートされたときに元に戻されてしまうかもしれません。

元のJDKを用いることを考えずAdoptOpenJDKのみを用いることを考えるなら、.bash_profileの末尾に

export PATH=/usr/lib/jvm/jdk8u181-b13/bin:$PATH


のようにするのが最も単純明快かと思います。

必要に応じて元のJDKと切り替える必要があるならば、update-alternativesによる管理を用いることになるでしょう。コマンドがうまくいかなかったとのことですが、書式に問題があったのではないかと思います。ただ、正しく記述したとしてもこの作業で切り替わるのはjavaコマンドだけです。javacコマンドについては参照先は元のJDKのままであり、AdoptOpenJDKによるjavacコマンドにはなっていません。

他のコマンドも全て一々update-alternativesで切り替えるのは手間なので、これを一括で行うためにupdate-java-alternativesというコマンドが用意されています。これについては、下記の資料を参考にしてみてはどうでしょうか。

update-java-alternatives に Oracle java も追加する

この資料に記されているjinfoファイルには、AdoptOpenJDKには存在しないコマンドもあるようなので、そこは適宜修正する必要はあるでしょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/12 09:40

    @keicha_hrsさん、返事が遅くなりまして、すみません。
    回答していただいた通りやったんですが、特に問題なかったです。

    > javacコマンドについては参照先は元のJDKのままであり、AdoptOpenJDKによるjavacコマンドにはなっていません。
    これは update-alternatives --config javac で adoptOpenjdkを指定することができるではないですか?


    実は```update-java-alternatives --set```を実行した後```/etc/alternatives```ところのシンボリックリンクを確認したらadoptOpenjdkになっているシンボリックリンクもあれば、まだ古いjdkを指定しているところもありました。

    それで、```update-alternatives --config```で adoptOpenjdkに変えようを思っていすが、このやり方は大丈夫ですか?

    キャンセル

  • 2018/11/14 00:21

    Ubuntuのバージョンはいくつでしょうか?16.04だとすると、update-java-alternativesに不具合があることが原因かもしれません。この問題に引っかかると、javacを含むいくつかのコマンドがAdoptOpenJDKのパスを指してくれない状態に確かになると思われます。

    (参考資料)
    最新版の update-java-alternatives は javac を更新してくれない
    https://kokufu.blogspot.com/2016/08/update-java-alternatives-javac.html

    Ubuntu 16.04については、この問題を修正したものが配布されていません。上記資料ではupdate-java-alternativesのスクリプトを直接編集することで対応しているのですが、Ubuntu 18.04用のパッケージをインストールすることでも改善できるようです。

    パッケージ: java-common (0.63ubuntu1~02)
    https://packages.ubuntu.com/bionic/java-common

    もし16.04であったならば、このパッケージをインストールすることを試してみてはどうかと思います。

    キャンセル

  • 2018/11/14 18:01

    @keicha_hrsさん、
    Ubuntuのバージョンは14.04です。
    やはり、update-java-alternativesスクリプトにjdkhl という項目を無視していました。
    参考資料のとおりした結果、全てが正しく更新されました。
    いろいろ勉強にもなりました。ありがとうございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る