关于运行:sdkmanager --update报错的原因是因为本地安装的jdk版本太高,安装jdk1.8版本就没问题了
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:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
JAVA jdk1.8下载地址:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
在Mac电脑上下载安装包,并完成安装。打开终端输入,查看当前版本
java -version
结果显示的还是Java15
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
这时候要重新配置java环境,进入当前用户根目录下,修改.bash_profile文件。
在终端输入以下代码,显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder
将.bash_profile拖入文本编辑框
新增以下内容,其中JAVA_HOME为你自己的java低版本路径,如果文件已经配置过了这个路径,则把高版本路径先删除。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
export PATH=$PATH:${JAVA_HOME}
保存修改,在终端中输入,让修改起作用。
source .bash_profile
在终端中输入验证结果
echo $JAVA_HOME
结果显示以下内容,那么说明修改成功
/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
但是到这里还没结束,此时还要第二步验证,重启终端,输入
java -version
结果显示,说明成功了。
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
部分同学会发现还是原来的高级版本,说明修改失败,此时要去注意是否修改错了文件,导致仅在当前的这个终端起作用,而新开的终端无效。
可以在终端执行以下语句,该代码会在用户根目录的文件中.zshrc,添加source /Users/xxxx/.bash_profile
echo source ~/.bash_profile >> ~/.zshrc
最后查阅了一下别人的博客,才知道原因。Mac系统的版本号不同,终端类型也不一样。
Mac OS X 10.2之前默认的是C Shell。
Mac OS X 10.3之后默认的是Bourne Shell。
输入查看当前的终端类型,如果输出的是:bash,sh,zsh,那么可能就是Bourne Shell的一个变种。
echo $SHELL
Bourne Shell在.bash_profile中设置的配置信息只有在打开终端的时候执行有效,终端关闭后,之前的设置的命令则无效;
所以当前的终端类型如果是Bourne Shell,则要额外执行
echo source ~/.bash_profile >> ~/.zshrc