【Flutter】Javaを入れるのに四苦八苦

Flutterの開発環境をMACで構築している時の話です。
兎にも角にも、Javaを入れるのに四苦八苦。一応解決したので自分メモ。

環境

macOS Catalina Version 10.15.7
Flutter 2.2.3
Xcode 12.4
Android Studio 2020.3
余談:Android Studionのバージョンについて

参考にした記事

開発環境の構築のためにこの記事を参照した。

macでflutter開発始めようとしたら思った以上にエラー出てきて時間かかった話。

MacのBrewで複数バージョンのJavaを利用する + jEnv

PATHを通すために環境変数の設定を理解する (Mac OS X)

しかしどうにもこうにも上手に行かない

Javaを入れたのに、こんな感じのエラーがどうにも解消できない。
Doctor summary (to see all details, run flutter doctor -v):
[!] Android Studio (version 2020.3)
    ✗ Unable to find bundled Java version.

解決策

Android Studioに付属してるJavaを使った。

export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"

余談:シェルについて

自分が使っているシェルを確認する。

$ echo $SHELL

/usr/local/bin/zsh

ホームディレクトリに  .zshrc ファイルは存在しているか確認する。

$ ls -a ~/ | grep .zshrc

設定ファイルについて(zshrcとzprofileについて)

さらにエラー

✗ Android license status unknown.
   Run `flutter doctor --android-licenses` to accept the SDK licenses.
   See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

Android SDKのライセンスを受け入れるために、
flutter doctor --android-licensesを実行しろ。と言われます。
コマンドを実行すると。。。

$ flutter doctor --android-licenses
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
	at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
	at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
	at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 5 more

エラーが出ます。。。
解決策はここで見つけました。

MACで解決させてみる

画像右上の縦の3点リーダー > SDK Manager

Android SDK > SDK Tools > Android SDK Command-line Tools(latest)にチェック

Hide Obsolete Packagesのチェックを外して、
Android SDK Tools(Obsolete)にチェック

ようやく解決

Applyして、再度flutter doctor --android-licenses実行。
これでようやく解決。
これ絶対に忘れると思うのでメモとしてブログにしました。
ではまた。

基本的な環境構築は以下を参考!