たとえば、sdkmanagerを実行すると、次のエラーが表示されます。
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:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 5 more
AndroidデバイスでFlutterコードを実行しようとすると、次のエラーが発生します。
Launching lib/main.dart on VOG L29 in debug mode...
Checking the license for package Android SDK Build-Tools 30.0.3 in /opt/android-sdk/licenses
Warning: License for package Android SDK Build-Tools 30.0.3 not accepted.
Checking the license for package Android SDK Platform 31 in /opt/android-sdk/licenses
Warning: License for package Android SDK Platform 31 not accepted.
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
platforms;android-31 Android SDK Platform 31
build-tools;30.0.3 Android SDK Build-Tools 30.0.3
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html
Using Android SDK: /opt/android-sdk
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 17s
Running Gradle task 'assembleDebug'... 18.1s
Exception: Gradle task assembleDebug failed with exit code 1
また、ライセンスに同意してエラーを修正しようとしましたが、やはり動作しませんでした。
答え1
簡単に言えば、あなたは必要です
- Java 8のインストール
$JAVA_HOME
それを指すように設定し、$JAVA_HOME/bin
あなたの$PATH
背景:sdkmanager
Java 8を使用するようにコンパイルされたため、Javaのバージョンがはるかに高くなる可能性があります。 XML バインディング API は Java 8 と Java バージョン間で大幅に変更されたため、sdkmanager
使用するクラスはもう存在しません。以前のJVMに戻ると、関連クラスをsdkmanager
見つけることができます。javax/xml/bind/annotation/XmlSchema
もう少し詳しく説明すると、AndroidはJava 8ベースのバイトコードランタイムを使用します。 Java標準との互換性に関するSunとOracleの意見の違いにより、JVMの最新バージョンにアップグレードされたことはありません。