AndroidスタジオでJava関連のエラーを実行しようとするたびに

AndroidスタジオでJava関連のエラーを実行しようとするたびに

たとえば、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

背景:sdkmanagerJava 8を使用するようにコンパイルされたため、Javaのバージョンがはるかに高くなる可能性があります。 XML バインディング API は Java 8 と Java バージョン間で大幅に変更されたため、sdkmanager使用するクラスはもう存在しません。以前のJVMに戻ると、関連クラスをsdkmanager見つけることができます。javax/xml/bind/annotation/XmlSchema

もう少し詳しく説明すると、AndroidはJava 8ベースのバイトコードランタイムを使用します。 Java標準との互換性に関するSunとOracleの意見の違いにより、JVMの最新バージョンにアップグレードされたことはありません。

おすすめ記事