Status Update
Comments
uc...@google.com <uc...@google.com>
rp...@google.com <rp...@google.com> #2
yu...@unity3d.com <yu...@unity3d.com> #3
So far, there seems to be a workaround - pass "--add-modules java.xml.bind" to the Java params. I can't modify avdmanager script for all the users, but thinking of passing it in JAVA_OPTS or CMD_LINE_ARGS.
yu...@unity3d.com <yu...@unity3d.com> #4
However we still need the fix please.
ga...@google.com <ga...@google.com> #5
JAVA_OPTS='--add-modules ALL-SYSTEM' $ANDROID_HOME/tools/bin/avdmanager
Once we start shipping JDK9 with the IDE, we can also compile the SDK tools with -target 9.
ga...@google.com <ga...@google.com> #6
ar...@gmail.com <ar...@gmail.com> #7
jb...@google.com <jb...@google.com> #8
ar...@gmail.com <ar...@gmail.com> #9
BTW, what package should be updated to take advantage of the fix in the future?
ar...@gmail.com <ar...@gmail.com> #10
ja...@google.com <ja...@google.com>
jo...@omnidapps.com <jo...@omnidapps.com> #11
se...@gmail.com <se...@gmail.com> #12
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:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 5 more
The workaround from #5 doesn't work on OpenJDK 11 because java.xml.bind has been removed.
jb...@google.com <jb...@google.com> #13
(For internal people, go/commandlinesdk is the proposal, but I'm not sure what its status is at this point).
ra...@google.com <ra...@google.com> #14
ar...@gmail.com <ar...@gmail.com> #15
jb...@google.com <jb...@google.com> #16
sdkmanager --channel=3 'cmdline-tools;1.0-alpha01'
or
sdkmanager --channel=3 'cmdline-tools;latest'
ha...@google.com <ha...@google.com> #17
The most recent version on
ar...@gmail.com <ar...@gmail.com> #18
I hope you’ll have a better luck with pushing right buttons than all of us. Being inside Google should help, right. Right?
[Deleted User] <[Deleted User]> #19
jb...@google.com <jb...@google.com> #20
as...@gmail.com <as...@gmail.com> #21
jb...@google.com <jb...@google.com> #22
pa...@gmail.com <pa...@gmail.com> #23
jb...@google.com <jb...@google.com> #24
[Deleted User] <[Deleted User]> #25
jb...@google.com <jb...@google.com> #26
sa...@peilicke.de <sa...@peilicke.de> #28
jb...@google.com <jb...@google.com> #29
ad...@gmail.com <ad...@gmail.com> #30
However when I run (JDK 11 environment):
wget --quiet --output-document=sdk-tools-linux.zip
unzip sdk-tools-linux.zip -d android-sdk-linux
ANDROID_HOME=$PWD/android-sdk-linux
PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/lib:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools"
android-sdk-linux/tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "tools"
android-sdk-linux/tools/bin/sdkmanager "platforms;android-29"
I get
"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:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 5 more"
al...@gmail.com <al...@gmail.com> #31
jb...@google.com <jb...@google.com> #32
- When you download and unzip the package like that, the directory into which it is put is not the same as what we would get if it were installed via sdkmanager. In this case, it goes into "tools," whereas it's expected to be in cmdline-tools/1.0.
- When sdkmanager runs, it notices that the unzipped stuff looks like a package, and (incorrectly, filed 150943631) thinks that this package is called "tools"
- Then you install "tools", which is the obsolete version of the tools you just downloaded. The obsolete version has a higher version than what's installed, though, since the new version is 1 and the old version was based on the corresponding android platform version (sort of, at some point), so since we think we're upgrading what's there, the new tools is overwritten (this actually happens even if we were to correctly determine the package path in the previous step. Filed 150944411).
- Then you run sdkmanager again, but this time you're running the old sdkmanager, which doesn't work (as reported initially here).
Probably you should just not install "tools". Also it would be helpful if you renamed the "tools" directory that comes from the zip to something else before starting out (filed 150946939).
Also I filed 150942306 which I ran into while testing using an incomplete version of the steps in #30.
[Deleted User] <[Deleted User]> #33
jb...@google.com <jb...@google.com> #34
ja...@googlemail.com <ja...@googlemail.com> #35
For details see for example here
Just add them and avdmanager will be usable with all Java versions again.
Or is the general plan to wait for 2023 when finally Java 8 reaches it's end-of-life?
jb...@google.com <jb...@google.com> #36
ja...@googlemail.com <ja...@googlemail.com> #37
I just test this, download newest Android Studio, install it and start it then Android SDK will be installed and "tools" package is installed.
sa...@peilicke.de <sa...@peilicke.de> #38
I couldn't agree more. With tools remaining installed by default, building OCI containers containing Android SDK and cmdline-tools is a PITA:
As you can see, a lot of extra ceremony is necessary. Because the default releases still contain tools, I need a container running Java 8 to execute sdkmanager "cmdline-tools;latest"
. Then I can actually build a container based on Java 11 (which is necessary due to Robolectric, etc..) that now sports cmdline-tools. Madness...
jb...@google.com <jb...@google.com> #39
We shouldn't be installing "tools" by default in recent versions of studio. Let me check to see if we still are by accident.
sa...@peilicke.de <sa...@peilicke.de> #40
When downloading commandlinetools-linux-6609375_latest.zip from
./tools/bin/sdkmanager --list
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Usage:
...
jb...@google.com <jb...@google.com> #41
sa...@peilicke.de <sa...@peilicke.de> #42
Thanks.
jb...@google.com <jb...@google.com> #43
(This is the story of life within google, and apparently it sometimes affects the outside world as well...)
I can ask about when the new version will be ready, and maybe update the old version if it won't be soon.
jb...@google.com <jb...@google.com> #44
va...@gmail.com <va...@gmail.com> #45
because sdkmanager --list
still result in below error in windows 10 sdk downloaded today (04-02-2021) by newly installed android studio (4.1.2)
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)
jb...@google.com <jb...@google.com> #46
As mentioned in
ja...@gmail.com <ja...@gmail.com> #47
Going to
// Beta channel
sdkmanager 'cmdline-tools;latest' --channel=1
// Canary channel
sdkmanager 'cmdline-tools;latest' --channel=3
Both
jb...@google.com <jb...@google.com> #48
If you do, please let me know where you downloaded from, what platform you're on, and what exact command you ran and from where.
bo...@gmail.com <bo...@gmail.com> #49
ran today with fresh install and ran into the same problem with tools being downloaded rather than cmdline-tools.
[Deleted User] <[Deleted User]> #50
jb...@google.com <jb...@google.com> #51
ma...@gmail.com <ma...@gmail.com> #52
Regardless of the historical reasons why tools is still being installed, would you consider:
-
When installing from Android Studio, install "cmdline-tools" by default? I just made a fresh install of BumbleBee and cmdline-tools wasn't there by default. Anyone doing something like
find ~/Library/Android/ |grep sdkmanager
will end up using a version that's been deprecated for some time. -
When installing from the commandline, provide a curl install script like
curl -s "https://developer.android.com/install.sh" | bash
? That would locate the appropriate zip file, setANDROID_HOME
, use the same location as what Android Studio, etc...
These 2 things would make sure that consistent locations and environment variables are used as well as simplify the initial setup.
Description
C:/android-sdk\ools\\bin\\avdmanager.bat list target -c
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.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
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
May also affect other SDK tools we are using, but so far this is the first one.