0

I install android studio, install Android SDK, Android SDK Platform, Android Virtual Device, and android command-line tools sdk latest. In .zshrc i have a path for sdk:

export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"
export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager

Java was installed with brew install openjdk, it is latest 17 version.

when run in terminal sdkmanager --list get error:

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:520)
... 5 more
Ismeet
  • 419
  • 5
  • 19
  • try using sdkmanager with Java 8 (both `JAVA_HOME` set to a java 8 jdk and it added to the `PATH`). – dan1st Dec 06 '21 at 08:25
  • Does this answer your question? [Failed to run sdkmanager --list with Java 9](https://stackoverflow.com/questions/47150410/failed-to-run-sdkmanager-list-with-java-9) – dan1st Dec 06 '21 at 08:28
  • There are all old answers, do i need to uninstall the previous java version before installing java 8. – Ismeet Dec 06 '21 at 08:51
  • No, you can install multiple java versions next to each other. You just need to set `JAVA_HOME` to the directory of your jdk (8) and add the `bin` directory of the jdk (8) to the `PATH` before every other java versions when using `sdkmanager`. – dan1st Dec 06 '21 at 10:28
  • Aside from there, there are also multiple newer answers to the question I linked (you can sort active answers first). – dan1st Dec 06 '21 at 10:31
  • Install java 8 and in sdkmanager add JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk before DEFAULT_JVM_OPTS='-Dcom.android.sdklib.toolsdir=$APP_HOME' , don't work. – Ismeet Dec 07 '21 at 07:26
  • Have you added the bin directory to the `PATH` before everything else? Is java 8 installed at that location? – dan1st Dec 07 '21 at 08:11
  • yes, java 8 is in /Library/Java/JavaVirtualMachines. Which PATH do you mean? Is this export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager in .zshrc – Ismeet Dec 07 '21 at 09:14
  • 1
    yes, try changing it to `export PATH="/Library/Java/JavaVirtualMachines/zulu-8.jdk/bin:$PATH:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"`. – dan1st Dec 07 '21 at 10:32
  • export JAVA8="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin:$PATH" export ANDROID_HOME=$HOME/Library/Android/sdk export PATH="$JAVA8:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" it works, thanks @dan1st – Ismeet Dec 07 '21 at 12:02

1 Answers1

0

At the suggestion of @dan1st, I install java 8 arm64, after installing java8, change sdkmanager in command-line and put

JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-8.jdk 
DEFAULT_JVM_OPTS='-Dcom.android.sdklib.toolsdir=$APP_HOME'

and change path in .zshrc

 export JAVA8="/Library/Java/JavaVirtualMachines/zulu-
 8.jdk/Contents/Home/bin:$PATH" 
 export ANDROID_HOME=$HOME/Library/Android/sdk 
 export PATH="$JAVA8:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"

Now I can run

 sdkmanager --list     
 sdkmanager "platforms;android-29" "system-images;android- 
 29;default;arm64-v8a" "system-images;android-29;google_apis;arm64-v8a"
 sdkmanager "cmdline-tools;latest" "build-tools;29.0.2"
Ismeet
  • 419
  • 5
  • 19
  • you can also run `PATH="$JAVA8:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager"` right before running sdkmanager. – dan1st Dec 07 '21 at 14:54