MacのBig Surになってビルドエラー

このページの内容は、2021年5月6日に行った記録です。

ざっくりまとめ

macOS Big Sur ではCordovaのビルドがエラーになります。
というか、gradle からのエラーなので Cordova に限ったことじゃないと思います。

現象

Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

▲のようなエラーがでます。

解決

tools.js が無いってことなので配置してあげるとOK

詳しくは下記「トラブル対応」をご覧ください。

注意

一番の重要ポイントなんですが、この問題はしばらくついてまわると思います。
というのも、自分自身でこれにハマるのが2回目だからです。

まずは初めて macOS Big Sur にアップデートしたときです。
macOS Catalina から macOS Big Sur への大きなアップデートになるので、まぁ何かしら出ますよね。

で、それからしばらくして2021年4月末、macOS Big Sur 11.3 が出ました。
で、すぐにアップデートしました。
で、ビルドできなくなりました。

久しぶりのことで色々忘れていたことと、思い出しかけてもこれ自体一度解決してることです。まさか同じことをもう一回することになるとは思ってませんでした。

ということで、macOS Big Sur のマイナーアップデート後にも同じエラーが出ると思うので、本記事のことを思い出したほうが良いと思います。

tools.jar を配置して解決

バージョンアップが完了して早速アプリを起動しようとしたところうまく起動できませんでした。

cd アプリのディレクトリに移動
cordova run android

次のようなエラーになって起動できません。

~ 省略 ~

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
27 actionable tasks: 2 executed, 25 up-to-date
/Users/takashi/app/terimukuri/aruite-me-my.com/app/kagawa_bouhan/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

書かれている内容を読んでいくと「Could not find tools.jar」の文字が気になります。

で、いろいろ調査などしていくのですが、最終的にはこちらに書かれていた方法で対応することにしました。

ざっくりと私の解釈で説明すると次のような感じです。

  • Big Surになって「JAVA_HOME」が消えた
  • JAVAの最新版のパスが「Internet Plug-Ins」になってる
  • コンパネからのJAVAの更新では最新版
  • /usr/libexec/java_home -V で複数出てくる
  • 「Internet Plug-Ins」には tools.jar は含まれてない。古いバージョンのほうには含まれてる
  • で参照しているのは「Internet Plug-Ins」のほう
  • JAVA_HOME を指定して古いバージョンを指すようにするか、もしくは、古いバージョンにある tools.jar を「Internet Plug-Ins」にコピーするか

ということで、次のようにして解決としました。

# 確認
/usr/libexec/java_home -V

# 存在することを確認
# 1.8.0_161 は▲で出てきた数字に書き換え
/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/lib/tools.jar

# tools.jar がいないことを確認
ls -la /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/t*

# コピー
# 1.8.0_161 は▲で出てきた数字に書き換え
sudo cp /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/lib/tools.jar /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib

※コピー元が無い場合は http://jdk.java.net/java-se-ri/8-MR3 からダウンロードして、解凍した中にある tools.jar を配置したらいけると思います。

ということで、▼を実行して確認です。

# cd アプリのディレクトリに移動
cordova run android

無事アプリが起動できました。