PR

[Flutter]M1 Macで「flutter doctor –android-licenses」で「Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema」が出たときの対応方法

Flutter

はじめに

先日、M1 Macに買い替えてから「flutter doctor -v」をしてないなと思いやってみたところ、「✗ Android license status unknown.」が出ていることに気が付きました。

上記の際に表示された「flutter doctor –android-licenses」を実行してみても「Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema」というエラーが出てしまい状況は改善しませんでした。

今回はこのエラーの対応のメモ書きです。

環境

  • Flutter 2.2.3
  • Android Studio 4.2.1
  • MacBook Pro(13-inch, M1, 2020)
  • macOS Big Sur 11.5.1

今回の問題

まずは対応前の状態で「flutter doctor -v」をターミナルで実行します。

flutter doctor -v」はFlutterの開発環境に問題があるかどうかを教えてくれるコマンドです。

% flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-arm, locale ja-JP)
    • Flutter version 2.2.3 at /Users/XXXXXXXX/fvm/versions/stable
    • Framework revision f4abaa0735 (6 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/XXXXXXXX/Library/Android/sdk
    • Platform android-S, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    ✗ 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.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      ???? https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      ???? https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.59.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.25.0

[✓] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 92.0.4515.131

! Doctor found issues in 1 category.

内容を見てみると「Android license status unknown.」という項目がNGになっているのがわかります。

またそこにはヒントとして「flutter doctor –android-licenses」を実行して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

すると例外が発生してしまいます。

これが今回の症状です。

対応方法

対応方法は簡単でした。

Android Studioで「Android SDK Command-line Tools」をインストールするだけです。

Android SDK Command-line Toolsのインストール方法

まずは適当なプロジェクトを開き、右上の[SDK Manager]を開きます。

ツールバーからなら[Android Studio]→[Preferences…]→[Appearance & Behavior]→[Android SDK]、プロジェクト選択画面からなら[Configure]→[SDK Manager]からも遷移できます。

次に「SDK Tools」を選択します。

[Android SDK Command-line Tools]にチェックをいれて、右下の「OK」を押します。

確認画面がでるので「OK」を押します。

すると以下のようなインストール画面がでてくるのでインストールが完了するまで待ちます。

これで対応完了です!

結果

念の為に「Android SDK Command-line Tools」をインストール後、ターミナルは再起動してください。

まずは「flutter doctor –android-licenses」を実行

% flutter doctor --android-licenses
All SDK package licenses accepted.======] 100% Computing updates...

例外を吐くことなく、無事完了!!

確認のために「flutter doctor -v」を実行

% flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-arm, locale ja-JP)
    • Flutter version 2.2.3 at /Users/XXXXXXXX/fvm/versions/stable
    • Framework revision f4abaa0735 (6 weeks ago), 2021-07-01 12:46:11 -0700
    • Engine revision 241c87ad80
    • Dart version 2.13.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/XXXXXXXX/Library/Android/sdk
    • Platform android-S, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5.1, Build version 12E507
    • CocoaPods version 1.10.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      ???? https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      ???? https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.59.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.25.0

[✓] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 92.0.4515.131

• No issues found!

こちらもすべての項目で問題なし

さいごに

こういうのは本当に困る。

おすすめ参考書

コメント

タイトルとURLをコピーしました