最近再尝试着接触Android开发,然而如此愚蠢的我,在第一步装在Android SDK时就开始报错了。错误为:
$ 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是能正常使用的
-bash-3.2$ java --version
java 10 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
在我百思不得其时,还是决定去博客或者论坛上求助答案了。功夫不负有心,我在stackoverflow看到有个人是提出了跟我一样的问题,当然这位大神在最后也找到了答案,并且也在评论出了自己的答案。
解决方法:
1、找到你的sdkmanager文件(一般在tools文件夹中bin目录中) 2、用你喜欢的编辑打开此文件
3、找到DEFAULT_JVM_OPTS变量
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
4、在该变量后加上
-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee
DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
5、保存。重新打开终端运行sdkmanager --list就好了