【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)にチェック
Android SDK Tools(Obsolete)にチェック
ようやく解決
Apply
して、再度flutter doctor --android-licenses
実行。
これでようやく解決。
これ絶対に忘れると思うのでメモとしてブログにしました。
ではまた。