예를 들어 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
간단히 말해서, 당신은 필요합니다
- 자바 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의 최신 버전으로 업그레이드된 적이 없습니다.