レガシー・バージョンのインストール方法【Java】

はじめまして、ますみです！

[![自己紹介.png](https://www.umi-mori.jp/wp-content/uploads/2023/02/introduction_banner_2-2048x533.png)](https://bit.ly/banner_intro_masumi_creator_qiita)


研究や開発をしていると、古いバージョン（Legacy Version）のJavaやJDKじゃないと動かないソフトウェアに出会うことがあると思います。
私は、この記事を書くにあたってEGI社の[GeoScan](https://www.egi.com/research-division/electrical-source-imaging/geoscan-sensor-digitization)というデバイスが`Java for macOS 2017`に依存していることによるバグに遭遇しました。

そこで、本記事では、macOSで古いバージョンのJavaをインストールする方法を紹介します。

# 前提知識
いくつか基礎的な用語を紹介しておきたいと思います。

| 用語                      | 説明                                                         |
| ------------------------- | ------------------------------------------------------------ |
| Java                      | どんな環境でも実行することができる汎用的なプログラミング言語。 |
| JDK                       | Java Development Kitの略で、Javaで開発をするために必要なソフトウェアをまとめたパッケージ。 |
| Jar                       | Java Archiveの略。Javaのファイルをまとめることができる圧縮形式の一つ。圧縮したままで実行することができることが特徴。 |
| Shell                     | コンピュータに指示をするためのコマンドをコンピュータに伝えるための中継役。 |
| sudo                      | Superuser doやSubstitute user do の略。管理者権限でコマンドを実行したい時などに先頭につけるコマンド。指定すれば、特定ユーザーに権限で実行することもできる。 |
| macOS (Catalina / Mojave) | Appleの開発したオペレーティング・システム（OS）。最近のOSだと、High Sierra => Mojave => Catalina => Big Surという流れ。 |
| AppleScript               | Appleの開発した自動化処理などを実行できるスクリプト言語。    |

# インストール手順
以下の流れでインストールを進めていきます。
1. Java / JDKのアンインストール
2. dmgファイルのダウンロード
3. Java Versionの確認

## 1. Java / JDKのアンインストール
現在インストールされているJavaを以下のコマンドでアンインストールします。

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

続いて、JVMのディレクトリに移動して、そこにある`xxx.jdk`というファイルを以下のコマンドで削除しましょう（人それぞれ`jdk1.8.0_06.jdk`のファイル名は変わります）。

```shell
$ cd /Library/Java/JavaVirtualMachines/
$ sudo rm -rf jdk1.8.0_06.jdk
```

## 2. dmgファイルのダウンロード
以下のサイトのようにAppleが出している過去のバージョンのdmgをダウンロードして、インストールします。

> ダウンロード Java for OS X 2017-001 - Apple
> https://support.apple.com/kb/dl1572?locale=ja_JP

## 3. Java Versionの確認
最後に、Javaがインストールされているか以下のコマンドで確認しましょう。

```shell
$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
```

# デバッグ紹介
続いていくつかインストール中に出てくる可能性のあるバグを紹介します。

## A. すでにインストールされているエラー
アンインストールをおこなっても、以下のようなバグが出てくることがあります。
>Java for 2015-001はこのディスクにインストールできません。このパッケージのより新しいバージョンがすでにインストールされています。

![already_install_bug.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/bea17da3-0cd1-6721-5127-365eb8bc6352.png)

このような時は以下のようにdmgファイルをsedコマンドで加工して`ModifiedJava6Install.pkg`というファイルを出力します。
具体的な手法としては、script editorというアプリを起動して、以下のコードを入力・保存・実行しましょう。

2015年版のスクリプトは以下の通りです。

```c:2015_exchange.scpt
set theDMG to choose file with prompt "Please select javaforosx.dmg:" of type {"dmg"}
do shell script "hdiutil mount " & quoted form of POSIX path of theDMG
do shell script "pkgutil --expand /Volumes/Java\\ for\\ OS\\ 2015-001/JavaForOSX.pkg ~/tmp"
do shell script "hdiutil unmount /Volumes/Java\\ for\\ OS\\ 2015-001/"
do shell script "sed -i '' 's/return false/return true/g' ~/tmp/Distribution"
do shell script "pkgutil --flatten ~/tmp ~/Desktop/ModifiedJava6Install.pkg"
do shell script "rm -rf ~/tmp"
display dialog "Modified ModifiedJava6Install.pkg saved on desktop" buttons {"Ok"}
```

2017年版のスクリプトは以下の通りです。

```c:2017_exchange.scpt
set theDMG to choose file with prompt "Please select javaforosx.dmg:" of type {"dmg"}
do shell script "hdiutil mount " & quoted form of POSIX path of theDMG
do shell script "pkgutil --expand /Volumes/Java\\ for\\ macOS\\ 2017-001/JavaForOSX.pkg ~/tmp"
do shell script "hdiutil unmount /Volumes/Java\\ for\\ macOS\\ 2017-001/"
do shell script "sed -i '' 's/return false/return true/g' ~/tmp/Distribution"
do shell script "pkgutil --flatten ~/tmp ~/Desktop/ModifiedJava6Install.pkg"
do shell script "rm -rf ~/tmp"
display dialog "Modified ModifiedJava6Install.pkg saved on desktop" buttons {"Ok"}
```

![already_install_debug_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/f7a93bcf-b90d-661b-216c-1052ba3492e1.png)
![already_install_debug_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/0417afa0-cb61-5123-f627-2211f5676e46.png)

## B. 2015年版のエラー
一見インストールに成功したように思えても、以下のようなエラーが出ることがあります。
> This package is incompatible with this version of macOS.

![bug_2015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/6e174c87-b4c7-7c72-505a-3b7bbbdb9cbb.png)

色々と模索したのですが、Mojave以降には対応していない模様でした、、、2017年版だとまだ対応しているため、そちらをインストールすることを推奨します。

# 最後に
最後まで読んでくださり、ありがとうございました！
いかがだったでしょうか？

この記事を通して、少しでもあなたの学びに役立てば幸いです！

:::note info
【仕事の相談はこちら】
お仕事の相談のある方は、下記のフォームよりお気軽にご相談ください。

[問い合わせフォームはこちら](https://forms.gle/G5g1SJ7BBZw7oXYA7)

もしもメールでの問い合わせの方がよろしければ、下記のメールアドレスへご連絡ください。

info*galirage.com（*を@に変えてご送付ください）

🎁 「生成AI活用の無料相談券」もしくは「生成AIの社内ガイドライン（無料PDF）」を『公式LINE』で配布中 🎁
『生成AIを業務に活用したいけど、どうしたらいいかわからない』といった声を多くいただきます。

Galirageでは公式LINEにて、チャットやオンライン会議で「完全個別の生成AI活用無料相談会」を実施しております！
（期間限定で実施しているため、ご興味ある方はお早めに以下のLINE公式アカウントをご登録ください^^）
https://lin.ee/rvz6lMN

※ 予告なく、キャンペーンを終了する可能性がございますが、ご了承ください。

【業務内容】
具体的には、以下のお仕事を中心に受け付けております！（[詳しくはこちら](https://galirage.notion.site/Galirage-AI-c2f3945fafb0433d8d2fd03e56927fd8)）
1. 受託開発（例：生成AIを使った社内システムの開発）
2. コンサルティング（例：技術戦略のアドバイス）
3. 講演（例：社内研修、イベント登壇）

※ 特に「生成AIを使ったシステム開発のご依頼」が多く、ご好評いただいております。

【これまでの相談事例】
以下のようなご相談が多くあります。

🔑 機密情報を漏洩させないための、生成AIのシステム構築をお願いしたい。
🤖 自社データを用いたFAQチャットボットの作り方を知りたい。
💡 ChatGPTを、自分たちの事業にどのように活かせるか、アドバイスやアイデアが欲しい。
:::
# おまけ
エンジニアの仲間（データサイエンティストも含む）を増やしたいため、公式LINEを始めました🎉

「**一緒に仕事をしてくれる方**」「**友だちとして仲良くしてくれる方**」は、友だち追加をしていただけますと嬉しいです！（仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆）

とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました！

友だち追加後に、アンケートに回答してくれた方へ「**エンジニア図鑑（職種20選）**」のPDFをお送りします◎

https://lin.ee/hFUN4TL

[![](https://www.umi-mori.jp/wp-content/uploads/2023/10/line_banner_v2.png)](https://lin.ee/hFUN4TL)
# 参考文献

https://techacademy.jp/magazine/9250

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0410

https://www.java.com/ja/download/help/mac_uninstall_java.html

https://www.l3harrisgeospatial.com/Support/Self-Help-Tools/Help-Articles/Help-Articles-Detail/ArtMID/10220/ArticleID/23780/Mac-OS-Catalina-1015-ENVIIDL-and-Legacy-Java-6-Dependencies