flutter doctor --android-licenses のエラー

Jun 26, 2021 23:00 · 605 words · 2 minute read flutter android

Flutter2系を触ってみようということで、環境を作りました。

以前Flutterの環境は作ったことがあるのでササッと済ませようと思ったのですが、「flutter doctor –android-licenses」でエラーが発生。
解決した内容をメモしておきます。

以前Flutterの環境を作った時の記事はこちら。

Flutter入門。Ubuntuの開発環境を準備した

目次

環境

  • macOS Catalina 10.15.7
  • Android Studio 4.2.1
  • Flutter 2.2.2

エラー内容

% 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

解決方法

「Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema」のエラーを調べてみると、Java1.8で動かす必要があるとのこと。

エラー発生時のJavaはこちら。

% java --version
openjdk 12.0.2 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

OracleのサイトからJava1.8をダウンロードします。

こちらのやり方でJava1.8に切り替えます。

Javaのバージョンを切り替える(ERR_SSL_PROTOCOL_ERROR, SSL_ERROR_RX_RECORD_TOO_LONG)

.zshrcに下記を追記

export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8"`
PATH=$JAVA_HOME/bin:$PATH

.zshrcの内容を反映させ、Javaのバージョンを確認

% source ~/.zshrc
% java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

これでライセンスの確認ができました。

% flutter doctor --android-licenses
Warning: File /Users/***/.android/repositories.cfg could not be loaded.        
5 of 7 SDK package licenses not accepted. 100% Computing updates...             
Review licenses that have not been accepted (y/N)? y
tweet Share