[!] Androidツールチェーン-Androidデバイス用に開発(Android SDK 27.0.3)
•Android SDK a ..\Android\sdk•Android NDKの場所は設定されていません(オプション、ネイティブプロファイリングサポートに便利です) Javaバイナリ:C:\ Program Files\Android\Android Studio\jre\bin\Java•JavaバージョンOpenJDKランタイム環境(ビルド1.8.0_152-release-1024-b02) X Androidライセンスステータスが不明です。
Flutter doctorを実行するとAndroid Sdkでエラーが発生しますが、デバイスでビルド/実行できます。この問題の修正方法に興味がありました。 Android SDKの最新バージョンをダウンロードしたと思いますが、先週この問題がなかったため何が起こったのかわかりません。
コメントで考えられるいくつかの修正を実行した後、新しい問題が発生しました。新しいjdk10とともにAndroid sdk P、8、および7の新しいバージョンをインストールしました。まだ十分に更新されていないようです。
C:\Flutter\flutter>flutter doctor --Android-licenses
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
C:\ Flutter\flutter> C:\ users\username\appdata\local\Android\sdk\tools\bin\sdkmanager.bat --update
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:582)
at Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.Java:190)
at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:499)
... 5 more
Android SDKを更新した場合、ライセンスが変更されている可能性があります。更新をどのように行ったかに応じて、変更を受け入れるように促される場合とされない場合があります。または、フラッターが理解できる方法で受け入れたという事実を保存しない場合があります。
解決するには、flutter doctor --Android-licenses
を実行してください。これにより、ライセンスを受け入れるように求められます(y
と入力してEnterキーを押すと、最初に尋ねられる場合があります).
それでも問題が解決しない場合は、 Flutter Github repository で新しいバグを開くか、 this one のような既存の問題にコメントを追加する価値があります。あなたが見ているものかもしれません。
エラー:
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:582)
at Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.Java:190)
at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:499)
... 5 more
現在のSDKバージョンはJava 9と互換性がないため、発生しています。
したがって、それを解決するには、JavaバージョンをJava 8にダウングレードするか、回避策を使用して端末で次のオプションをエクスポートします。
Linux:
export Java_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
Windows:
set Java_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
そして、それを固めるために、Linux上のプロファイルファイルでJava_OPTSをエクスポート(.zshrc
、.bashrc
など)するか、Windowsで環境として永続的に追加できます。
次に、flutterまたはsdkmanagerコマンドを入力できます。
フラッター:
flutter doctor --Android-licenses
sdkmanager:
sdkmanager --licenses
ライセンスを受け入れる必要がある場合はYを入力します。
私の問題を解決する手順は次のとおりです。
flutter doctor --Android-licenses
y
を押して承認すると、このプロセスが数回発生する場合があります。できた!これも #16025 と同じ問題でした
スレッド「main」の例外Java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlSchemaこの問題は、通常Java 9をインストールしたときに発生するようです。ところで、Android-sdkとの互換性がない場合は、Java 9 JDKがまだ存在する場合は削除してください。
一般に、JAXB APIはJava EE APIと見なされるため、Java SE 9のデフォルトのクラスパスには含まれなくなりました。Java 9では、モジュールの概念、およびデフォルトでJava.se集約モジュールはクラスパス(またはモジュールパス)で利用可能です。名前が示すように、Java.se集約モジュールには、従来Java 6/7/8にバンドルされていたJava EE APIが含まれていません。幸いなことに、JDK 6/7/8で提供されたこれらのJava EE APIはまだJDKにありますが、デフォルトではクラスパス上にありません。追加のJava EE APIは、次のモジュールで提供されます
Java9/10がインストールされている場合の回避策
交換
DEFAULT_JVM_OPTS='"-Dcom.Android.sdklib.toolsdir=$APP_HOME"'
これで
DEFAULT_JVM_OPTS='"-Dcom.Android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee'
Androidライセンスステータスの不明な問題については、次の手順で解決しようとしました:
Android SDKの場所C:\ Users%user%\ AppData\Local\Android\Sdk\tools\binまたは〜/ Library/Android/sdk/tools/binに移動します
コマンドを実行します:./sdkmanager --license
参照資料
sdkmanager --list(Android SDK)をJava 9で実行できませんでした
Java.lang.NoClassDefFoundErrorの解決方法:Java 9のjavax/xml/bind/JAXBException
ここに私の解決策があります:
sDKManをインストールする
$ curl -s "https://get.sdkman.io" | bash
bash_profileを設定する
$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
Java sdkを見つけて、インストールするバージョンを選択します
$ sdk ls Java
$ sdk install Java 8.0.192-zulu
フラッタードクター警告メッセージをコピーしてsdkmanagerを更新
$ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
1〜4の後、やり直してください
$ flutter doctor --Android-licenses
GitHubの問題コミュニティで提供されているこの行は、私の問題を修正しました。ここでは、それが他の人を助ける場合に備えています。
@rem Execute sdkmanager
"%Java_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules Java.se.ee %Java_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.Android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%
私はこれを見つけました ソリューション JDK 8を使用する必要があるため(今すぐダウンロードするにはアカウントが必要です!)-Android Studioに付属の埋め込みOpenJDKを使用します:
これを~/.profile
などに追加します。
# Use the JDK embedded with Android Studio for command-line builds
export Java_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'
gradlew
を介したコマンドラインビルド、およびその他の適切に動作するスクリプトは、Android Studio 2.2+に同梱されているバージョンのSDKを使用します。
*私のMacはまだデフォルトのJava 7を使用していました。
Javaバージョンのダウングレード を試してください。これは、システムのJavaバージョンがAndroidのバージョンと互換性がない場合に発生します。 Javaバージョンを変更すると、flutter doctor
を実行するだけでライセンスが自動的に受け入れられます。
私と同じ問題、少なくとも[1.8]でなければならないJavaバージョンを確認してください
AndroidSDK
を検索します。flutter SDKルートフォルダーからflutter_console.batファイルを開き、コマンドを実行します
flutter doctor --Android-licenses
Android SDKの新しくダウンロードされた更新のライセンスを受け入れます。 Android SDKをダウンロードして更新するたびに実行する必要があります。