嗨我想知道Android sdk是否与Java版本17.0.1兼容??
实际上,我正在尝试使用命令行构建一个应用程序...为此,我安装了 Gradle、java,还安装了 Android sdk 以及诸如“命令行工具”、“平台工具”等软件包。 ..
但是当我尝试运行 sdkmanager 时它显示了这个
线程“main”中的异常 java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 在 com.android.repository.api.SchemaModule$SchemaModuleVersion。(SchemaModule.java:156) 在 com.android.repository.api.SchemaModule.(SchemaModule.java:75) 在 com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81) 在 com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) 在 com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) 引起原因:java.lang.ClassNotFoundException:javax.xml.bind.annotation.XmlSchema 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) ...还有5个
我在网上搜索了一下,发现我必须将我的java版本降级到8....但我不想降级它..
您的系统路径上可能有旧版本的 sdkmanager。
这是 Android Studio 的问题,长时间后更新应用程序时,
tools/bin
文件夹可能会过时(这是我指的主要 SDK 工具安装文件夹)。
简短简单的解决方案:
从系统路径中删除
ANDROID_HOME/tools/bin
。
SDK Tools 环境变量页面的一些其他工具(在我的例子中,我使用 Cordova 构建 Android 应用程序)建议将文件夹添加到您的路径中,但我认为外部应用程序应该使用 cmdline-tools 与安卓环境。
因此,将其从路径中删除应该不会产生任何影响。
我的问题在哪里:
.
└── ANDROID_HOME
├── build-tools
├── cmdline-tools
| └── latest
| └── bin <- new latest tools
├── emulator
├── extras
├── ndk
├── platforms
├── platform-tools
├── sources
├── system-images
└── tools
└── bin <- out of date tools
如果您查看
ANDROID_HOME/cmdline-tools/latest/bin
并在文本编辑器中打开 sdkmanager.bat 或 avdmanager.bat。我找到了 Java 17 的检查。
if !version! lss 170 if "%SKIP_JDK_VERSION_CHECK%" == "" (
echo Java version 17 or higher is required.
echo To override this check set SKIP_JDK_VERSION_CHECK
goto :eof
)
ANDROID_HOME/tools/bin
文件没有执行此检查,并且仅在 Java 8 上工作。系统路径上有两个具有相同文件名的文件夹,在这种情况下,使用的是旧版本。
我重新安装了 Android SDK、构建工具和 cmdline-tools。等等通过卸载并重新安装。这为我解决了一些其他问题,但无论我重新安装工具多少次,
tools/bin
文件夹都从未更新到最新版本。
解决此问题的更好方法可能是卸载 Android Studio 并删除 ANDROID_HOME 目录。然后重新安装一切。