我下载并安装了:
jdk-9.0.1_osx-x64_bin.dmg)sdk-tools-darwin-3859397.zip)来自Google 这里。配置PATH变量后,我尝试运行sdkmanager,它取代了用于管理SDK组件的android命令。但是,它失败了,如下所示:
$ sdkmanager --list
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.SdkManagerCli.main(SdkManagerCli.java:117)
at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93)
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:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 5 more以下是Java版本:
$ java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)有人知道如何在不返回Java 8的情况下修复它吗?
相关问题
警告
请注意,我前面已经提到过,返回到Java 8或并行运行它是而不是。
发布于 2017-11-07 05:11:40
在这个答案的帮助下,我成功地解决了这个问题。
我们将在sdkmanager中应用一个修复程序。这是一个shell脚本。它位于$android_sdk/tools/bin,$android_sdk是您解压缩Android的地方。
sdkmanager。DEFAULT_JVM_OPTS变量的行。在我的副本中,它在第31行:
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"‘-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee。请注意引号。在我的副本中,行如下:
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME“-XX:+IgnoreUnrecognizedVMOptions --添加模块java.se.ee‘结果如下:
$ sdkmanager --list
Installed packages:
Path | Version | Description | Location
------- | ------- | ------- | -------
tools | 26.0.1 | Android SDK Tools 26.0.1 | tools/
Available Packages:
Path | Version | Description
------- | ------- | -------
add-ons;addon-g..._apis-google-15 | 3 | Google APIs
add-ons;addon-g..._apis-google-16 | 4 | Google APIs
add-ons;addon-g..._apis-google-17 | 4 | Google APIs
add-ons;addon-g..._apis-google-18 | 4 | Google APIs
add-ons;addon-g..._apis-google-19 | 20 | Google APIs
add-ons;addon-g..._apis-google-21 | 1 | Google APIs
add-ons;addon-g..._apis-google-22 | 1 | Google APIs
add-ons;addon-g..._apis-google-23 | 1 | Google APIs
add-ons;addon-g..._apis-google-24 | 1 | Google APIs
...你好!它起作用了!
-编辑: 2017-11-07
请注意,您可能需要在运行sdkmanager --update后再次应用上述修复,因为如果更新sdkmanager包,则可能会重写sdkmanager外壳脚本。
相关答案
发布于 2019-08-30 20:33:06
接受的答复在2019年2月已经过时。这是一个答案,它将在sdkmanager迁移到更新版本的Java之前工作。但到那时,你就不会再有这个问题了。
OpenJDK 10被OpenJDK 11所取代,它根本不实现
java.se.ee。这意味着添加--add-modules java.se.ee的黑客不再做任何事情了。这也意味着,如果您的更新配置正确,OpenJDK 10将自动从您的系统中删除,并在下次更新时使用OpenJDK 11替换。 通过将sdkmanager内部的JAVA_HOME设置为Java8安装,修改sdkmanager以使用Java8。默认情况下,这里是~/Android/Sdk/tools/bin/sdkmanager.Add的默认JVM选项。您还可以在这里使用JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME“和SDKMANAGER_OPTS传递JVM选项$ JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions‘@rem添加默认JVM选项。您还可以使用JAVA_OPTS和SDKMANAGER_OPTS将JVM选项传递给此脚本。设置JAVA_HOME="C:\ProgramData\scoop\apps\android-studio\current\jre“集DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0..” 这样,您可以在您的系统上继续使用sdkmanager.Java export _HOME=/usr/lib/jvm/default,同时在您的系统上使用一个正常和维护的Java版本,现在我有一些输油管道需要修复。
发布于 2018-02-09 11:22:08
您可以使用SDKMANAGER_OPTS设置sdkmanager选项。
示例:
export SDKMANAGER_OPTS="--add-modules java.se.ee"
sdkmanager --listhttps://stackoverflow.com/questions/47150410
复制相似问题