Cordova向けにJDKを再インストール

少し長くなりますが、お付き合いください。
# 経緯
ElectronとCordovaを用いて、HTML/CSS/JavaScriptによるマルチプラットフォームなアプリの開発をしたく、環境構築を行っています。
Windows、macOS、iOS向けにテストアプリを作ることができましたが、Android向けを用意する段で躓きました。

# 起きた問題
## JDKのバージョンが古いらしい
Cordovaにてテストアプリを作成後に、iOSの実機テストまで行えました。
Androidのエミュレータでの動作確認 → 実機テストを行いたく、Cordovaにてplatform追加後に`cordova run android`してみたところ、エラー発生で上手く動きません。

```ruby:エラーメッセージ
CordovaError: Requirements check failed for JDK 1.8 or greater
```

現環境のJDK(Java Development Kit)のバージョンが古いようです。

# 環境
- macOS Sierra 10.12.6 / iMac (Retina 5K, 27-inch, Late 2015)
- node.js 10.0.0
- nodebrew 8.9.4
- npm 6.0.1

# 調査
## JDKのバージョンを調べる。
下記のサイトを参考に、まずはJDKのバージョンを調べてみます。

「Java 6 [Apple版]」のアンインストール
http://www.keyton-co.jp/blog/article/Java6forMacUninstall

macOSのJDKのインストール・更新方法
https://qiita.com/takayamag/items/1469c59370df348240f8

ターミナルで下記を実行します。

```ruby:
$ java -version
```

```ruby:結果
java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)
```

最新版になっています。

さらに下記を実行します。

```ruby:
$ /usr/libexec/java_home -V
```

```ruby:結果
Matching Java Virtual Machines (4):
    10.0.1, x86_64:     "Java SE 10.0.1"        /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
    1.8.0_172, x86_64:  "Java SE 8"     /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
    1.6.0_65-b14-468, x86_64:   "Java SE 6"     /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
    1.6.0_65-b14-468, i386:     "Java SE 6"     /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
```

JVMが複数存在しています。
恐らく、JDKのバージョン管理が必要と思われます。
JDKバージョン管理については、下記のような良記事があります。

[【2018年版】macでAndroid開発環境を構築するための４つのこと](https://qiita.com/Alex_mht_code/items/5fd8eed6c4b96091d581)

めんどくさ・・・・・・
(´・ω・｀)
じゃなくて、結構たいへんそうです。

# 前提
先日アップした記事「[Node 10.0.0でgulpクラッシュ](https://qiita.com/yokokouji/items/b2e23e005be697208819)」のものとはマシンが異なります。
CGや動画制作、デザイン制作用のiMacですが、環境共有のためにこのマシンでも試行錯誤しています。
Adobe CS6のアプリ群を使用するためにJava 6をインストールしていました。

# 解決
上記の様にJVMが複数存在しているため、管理がなかなか難しそうです。
追々管理ができるようにしていきますが、一旦Javaをすべてアンインストールして、当初の目的を果たします。
## Javaの削除
### Java 6 [Apple版]をアンインストール
上記サイトを参考にアンインストールします。

```ruby:Java6パッケージ情報を削除
$ sudo pkgutil --forget com.apple.pkg.JavaForMacOSX107
```

```ruby:1.6.0.jdkを削除
$ sudo rm -rf  /Library/Java/JavaVirtualMachines/1.6.0.jdk/
```

```ruby:削除を確認
$ ls -ld /Library/Java/JavaVirtualMachines/1.6.0.jdk
```

`ls: /Library/Java/JavaVirtualMachines/1.6.0.jdk: No such file or directory`と返ってくれば削除成功です。

```ruby:更に確認
$ /usr/libexec/java_home -V
```
```ruby:結果
Matching Java Virtual Machines (2):
    10.0.1, x86_64:     "Java SE 10.0.1"        /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
    1.8.0_172, x86_64:  "Java SE 8"     /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
```

### Java8をアンインストール
```ruby:
$ sudo rm -rf  /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/
```
```ruby:結果を確認
$ ls -ld /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/
```
`ls: /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/: No such file or directory`と返ってくれば削除成功です。

```ruby:更に確認
$ /usr/libexec/java_home -V
```
```ruby:結果
Matching Java Virtual Machines (1):
    10.0.1, x86_64:     "Java SE 10.0.1"        /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home
```

### Java10をアンインストール
```ruby:
$ sudo rm -rf  /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/
```
```ruby:結果を確認
$ ls -ld /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/
```
`ls: /Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/: No such file or directory`と返ってくれば削除成功です。

```ruby:更に確認
$ /usr/libexec/java_home -V
```
```ruby:結果
Unable to find any JVMs matching version "(null)".
Matching Java Virtual Machines (0):

Default Java Virtual Machines (0):

No Java runtime present, try --request to install.
```

### 補足
下記をそれぞれ実行して、ブラウザ、環境設定に絡むパッケージ情報を削除します。

```ruby:
$ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin 
$ sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane 
$ sudo rm -fr ~/Library/Application\ Support/Java
```

### 結果
`cordova run android`を実行したところ、

```ruby:
CordovaError: Failed to find 'JAVA_HOME' environment variable. Try setting it manually.
```
とのエラーに変わりました。
「Javaが無いですよ」ということですので、Javaのインストールから構築開始です。

## Javaの再インストール
Java6は一旦保留します。
(※Adobe CS6でのみ使用していることと、直近でCS6アプリ群を使用する予定が無いため)

### Java8のインストール
`brew cask install java8`を実行します。

### Cordovaにて
`cordova run android`を実行した結果です。

```ruby:結果
CordovaError: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle
```

Gradle(ビルドツール)が入っていないと・・・

Javaのバージョン問題は解決できましたので、引き続きAndroid開発環境の構築を進めます。

・・・なかなか厄介です。

# まとめ
アプリ開発をしない限りは、あまりJavaを意識することはありませんでしたが、改めて掘り下げてみると、マシンの中身が思いの外グチャッとしていました。
見た目上はスッキリしているようでも、あれやこれやと入れたり出したりしているからです。
今回のように根本的に削除して、0から構築し直すという手順は、これからも整理方々キチンと身に付けていかないといけません。

長くなりましたが、最後までお読みいただきありがとうございました。