*

Mac(OS X)におけるJava8(jdk8)等のインストール、アップデート、アンインストール方法

公開日: : 最終更新日:2015/05/01 Java


スポンサードリンク



Windowsとは異なりMac(OS X)ではJDKの管理(インストール、アンインストール)が難しいと感じます。
本エントリーではこの方法に関して記載させていただきます。

本エントリーの内容は以下の通りです。

  1. Java関係のインストール状況の確認方法
  2. Java8のアンインストール方法
  3. Java8のインストール方法
  4. 利用するJavaの切り替え方法

 

1 Java関係のインストール状況の確認方法

デフォルトで動作するjava、javacのバージョンの確認方法

ターミナルでjavaもしくはjavacコマンドを実行した時に動作するJDK、JREのバージョンの確認方法を説明させていただきます。

javaの確認方法

ターミナルでjava -versionを実行します。

“1.8.0_25″だと分かりました。

javacの確認方法

ターミナルでjavac -versionを実行します。

“1.8.0_25″だと分かりました。

インストールされている全てのjavaの確認方法

javac、javaにパラメータ-versionを渡すとターミナル環境で解決された各コマンドのバージョン情報が確認できますが、インストールされている全てのjavaの確認はできません。この確認を行うためには
ターミナルで/usr/libexec/java_home -Vを実行します。

/usr/libexec/java_homeはシンボリックリンクです。
macmini:bin user$ ls -l /usr/libexec/java_home
lrwxr-xr-x 1 root wheel 79 2 27 2014 /usr/libexec/java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home

javacとjavaコマンドの解決方法

Windowsだと環境変数のPATHで両コマンドは解決されますが、Macは違います。

javaコマンドがどこに存在するかをwhichコマンドを用いて調べてみます。
which java
をターミナルから実行すると/usr/bin/javaが結果として得られます。

では/usr/bin/javaってどんなファイルorディレクトリか確認するために
ls -l /usr/bin/java
をターミナルから実行すると
lrwxr-xr-x 1 root wheel 74 2 27 2014 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
との結果が得られます。/usr/bin/javaはシンボリックリンクなんですね、

では/System/Library/Frameworks/JavaVM.framework/Versions/は何なんでしょう?
ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
をターミナルから実行すると以下の結果が得られました。

CurrentもAへリンクですね
Aの中身は言うと以下の通りとなっています。

Commandsの中身は以下の通りとなっています。

うーん、ここにはjavaコマンドがありますが、jdk1.8.0_25のjavaコマンドのサイズは99296です。
jdk1.8.0_20のjavaコマンドのサイズは99296ですのでjdk8のコマンドがコピーされているわけではないようです。

でもjavaを実行すると/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaが実行される・・・
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaはプロキシで、呼び出すべきjavaコマンドのパスを自動で判定しているとしか思えません・・・

どれが最新のjava環境かとの判断はjava_homeコマンドが行っているように思えます。
当然ですが環境変数のJAVA_HOMEが指定されていればその値が優先されます。

2 Java8のアンインストール方法

http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html
によると

Uninstalling the JDK

To uninstall the JDK, you must have Administrator privileges and execute the remove command either as root or by using the sudo(8) tool.

Navigate to /Library/Java/JavaVirtualMachines and remove the directory whose name matches the following format:*

/Library/Java/JavaVirtualMachines/jdk..<macro[_update]>.jdk

だそうです。よって以下の2コマンドを実行するだけです。
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk

jdk1.8.0_25のアンインストール

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdkを実行しました。
その後にjava -versionを実行すると以下の結果が得られました。

jdk1.8.0_25だったバージョンがjdk1.8.0_20に変わりました。
java_home -Vの結果も確認してみます。

予想通りこの結果にもjdk1.8.0_25が表示されなくなりました。

jdk1.8.0_20のアンインストール

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdkを実行しました。
その後java -versionを実行すると以下の結果が得られました。

「Could not determine current working directory.」って、実行するJavaが解決できないですね・・・

試しに
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java -version
とフルパスで実行してみるとちゃんと動作します。

さらに試しに
export JAVA_HOME=/usr/libexec/java_home -v 1.7でJAVA_HOMEを明示的に指定すると正しく動作します。

うーん、気のせいかと思いマシンを再起動したところJAVA_HOMに1.7を明示的に設定したときと同様に正しく動作します。
envで環境変数を確認してもJAVA_HOMEは設定されていません。
一回でも正しいJAVA_HOMEをシステムに知られてしまうとおぼえてしまうのでしょうか?

インストールされている最新のJavaを認識できるまでにタイムラグがあるのでしょうか!?
/usr/libexec/java_home -Vの実行結果は以下の通りです。

正しくjava8が消されたことを認識できています。

3 Java8のインストール方法

再度Java8をインストールしてみます。なおjava8が既にインストールされている環境にjava8のアップデートバージョンをインストールする場合でも同じ手順で作業すればOKです。

Java8のダウンロードとインストール

まずは。Mac(OS X)用のJDK8の最新版をダウンロードします。
Oracleのダウンロードサイトにアクセスし
以下の画面の「Accept License Agreement」にチェックを付けたあとに、「jdk-8u25-macosx-x64.dmg」をクリックします。
(u25は2014年11月1日現在の数値です。)
スクリーンショット 2014-11-01 14.57.29

ダウンロードが開始されますので、ダウンロードが終わるまで少し待ちます。
ダウンロード完了後にjdk-8u25-macosx-x64.dmgをダブルクリックするとインストールが開始され以下の画面が表示されますので、以下の画像の赤枠部分をダブルクリックします。
スクリーンショット 2014-11-01 15.05.22

次に以下の画面が表示されますので「続ける」ボタンをクリックします。
スクリーンショット 2014-11-01 15.07.53

すると画面は以下のように変化しますので「インストール」ボタンをクリックします。
スクリーンショット 2014-11-01 15.10.56

実際のインストール処理が開始されました。
スクリーンショット 2014-11-01 15.13.55

インストールが完了すると以下の画面が表示されますので、「閉じる」ボタンを押してインストールは完了です。
スクリーンショット 2014-11-01 15.16.04

Java8のインストール後の確認

java -versionの確認

java -versionからいってみます。

うんうん、ちゃんとJava8に変わってますね。

javac -versionの確認

javac -versionもついでにいってみます。

こちらもちゃんとJava8に変わってますね。

/usr/libexec/java_home -Vの確認

/usr/libexec/java_home -Vも実行してみます。

ちゃんとJava8のhomeが認識できています。

4 利用するJavaの切り替え方法

これについては先ほども記載いたしましたが環境変数のJAVA_HOMEを設定することで可能です。

利用するJavaを8から7に切り替える

export JAVA_HOME=/usr/libexec/java_home -v 1.7を実行することでjavaとjavacのバージョンが7に変わります。

実際にJAVA_HOMEに1.7のJAVA_HOMEを設定した後、javac -versionとjava -versionを実行した結果は以下の通りです。

利用するJavaを7から8に切り替える

再度java8に切り替えてみます。

うん、うん、ちゃんとJava8に切り替りました。


スポンサードリンク



関連記事

JDK8(Java8)のインストール方法[Windows]

本エントリーは、Windows7 64bitにJDK8(Java8)をインストールする説明を記載させ

記事を読む

Eclipse4.4(Java)における自動ビルド設定の変更方法の説明

Eclipse4.4における自動ビルド設定の変更方法を説明させていただきます。 自動ビルド設定の変

記事を読む

JDK8(java 8)の新機能のラムダ式の利用方法[その1:概要]

「JDT betaを利用してJDK8対応のEclipse開発環境を作成する」では、「Eclipse」

記事を読む

Eclipse(4.3,4.4)の使い方[各画面エリアの名称とパースペクティブのビューのカスタマイズ]

本エントリーでは、Eclipse(Eclipse4.3,4.4)の各画面エリアの名称の説明と、ビュー

記事を読む

Java超入門 with Eclipse[5:クラスに関する基礎知識(メソッドをJUnitを使って説明)]

クラスに関する基礎知識シリーズも、いよいよメソッドを残すのみとなりました。 前回までは、Eclip

記事を読む

Java8のラムダ式とStream APIを利用してコーディング量の削減サンプル集

Java8になりラムダ式と「Stream API」が利用できるようになりました。 C#では一足早く

記事を読む

Eclipseの「DBViewer」プラグインを利用して「Java DB」の環境を作成し、SQLを発行してみる

EclipseのJUnitプラグインとDBUnitを併用したDB(データベース)のアクセス処理のユニ

記事を読む

Eclipse4.4(Java)におけるビルド・パス関係の設定方法[ビルド・パス上に必要なプロジェクト/プロジェクト参照の追加]

Eclipse4.4(Java)におけるビルド関係のビルド・パス上の「ビルド・パス上に必要なプロジェ

記事を読む

Selenium入門その4[Selenium WebDriver(Java/Junit4)の基本コマンド]

前回はEclipse環境でSelenium WebDriverでJava/Junit4を利用したテス

記事を読む

Java超入門 with Eclipse[2:プリミティブ型(基本データ型)とは]

他のプログラミング言語と同様に、Javaにもデータ型が存在します。 Java超入門の第2回では、プ

記事を読む

Comment

  1. […] Mac(OS X)におけるJava8(jdk8)等のインストール、アップデート、アンインストール方法 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Selenium入門その6[Selenium3でWebDriver(Java/Junit4)の環境を作成しEdge,Chrome,Firefoxで確認してみる]

Selenium3も3.0.1がリリースされましたし、今後は本格的にS

Selenium利用時のトラブルシューティング方法[クリック編]

Seleniumは便利なテスト自動化ツールですし、今後は更なる利用者の

Java8のラムダ式とStream APIを利用してコーディング量の削減サンプル集

Java8になりラムダ式と「Stream API」が利用できるようにな

Selenium入門その5[ページオブジェクトパターン(Page Object Design Pattern)を利用して変更に強いテストを作成する方法]

Selenium入門その2 では「UIマップファイル」と言う仕組みが

Javaによる非同期処理入門その1[非同期処理の実装方法の概説]

Javaによる非同期処理に関するエントリーを前々から作成したいと思って

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑