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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

7491閲覧

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

rev_timo

総合スコア117

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1グッド

0クリップ

投稿2018/11/09 02:19

タイトルの通りですが、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に変更する必要ありますか。

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

keicha_hrs👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2018/11/09 15:14

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

2018/11/10 05:17

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

回答1

0

ベストアンサー

/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/10 06:38

編集2018/11/10 08:40
keicha_hrs

総合スコア6766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rev_timo

2018/11/12 00:40

@keicha_hrsさん、返事が遅くなりまして、すみません。 回答していただいた通りやったんですが、特に問題なかったです。 > javacコマンドについては参照先は元のJDKのままであり、AdoptOpenJDKによるjavacコマンドにはなっていません。 これは update-alternatives --config javac で adoptOpenjdkを指定することができるではないですか? 実は```update-java-alternatives --set```を実行した後```/etc/alternatives```ところのシンボリックリンクを確認したらadoptOpenjdkになっているシンボリックリンクもあれば、まだ古いjdkを指定しているところもありました。 それで、```update-alternatives --config```で adoptOpenjdkに変えようを思っていすが、このやり方は大丈夫ですか?
keicha_hrs

2018/11/13 15: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であったならば、このパッケージをインストールすることを試してみてはどうかと思います。
rev_timo

2018/11/14 09:01

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問