1

Previously I had this is the beginning of my .gitlab-ci.yml file:

image: openjdk:8-jdk

variables:
 ANDROID_HOME: "/androidsdk"

before_script:
  - chmod +x ./gradlew
  - ./scripts/setup-android-sdk.sh

Now I changed image to

image: openjdk:11-jdk

and I have this error in ci/cd:

Running with gitlab-runner 11.9.2 (fa86510e)
on Mobile Android app GitLab CI Runners LWfCCxFM

Using Docker executor with image openjdk:11-jdk ...
Pulling docker image openjdk:11-jdk ...
Using docker image sha256:0719902862f3aa23b1e419b86666aa31c22095b5269d9633599b714718675973 for openjdk:11-jdk ...
Running on runner-LWfCCxFM-project-3359-concurrent-0 via mobileandroidgitlabci...
00:01
Reinitialized existing Git repository in /builds/android/androidclient/.git/
00:02
Clean repository
Fetching changes...
fatal: remote origin already exists.
From https://gitlab.****.tech/android/androidclient
 * [new ref]               f21db547816f7f472eec299b3ec4cfdb6d9b5555 -> refs/pipelines/8861554
   7475181b40..f21db54781  migrate_app_to_31_target_sdk_mob_11536 -> origin/migrate_app_to_31_target_sdk_mob_11536
Checking out f21db547 as migrate_app_to_31_target_sdk_mob_11536...
Skipping Git submodules setup
$ chmod +x ./gradlew
00:01
$ ./scripts/setup-android-sdk.sh
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:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 5 more
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:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 5 more

My setup-android-sdk script:

#!/usr/bin/env bash

ANDROID_COMPILE_SDK=`egrep 'compileSdkVersion [0-9]*' androidclient/build.gradle | awk '{print $2}'`

yes | ${ANDROID_HOME}/tools/bin/sdkmanager --licenses
${ANDROID_HOME}/tools/bin/sdkmanager "platform-tools" "platforms;android-${ANDROID_COMPILE_SDK}"

I think the problem in setup-android-sdk script. How could I change it? I just don't undertand how it works. I understand, that this is because of Java 11, javax was removed. But if I removing setup-android-sdk script from yml file, there is No more errors (but no compiled apk too). Please help

This question is not duplicate! And should be reopened

Vladimir Fisher
  • 3,090
  • 2
  • 17
  • 23
  • I think your real question is not how to upgrade your _CI pipeline_, but how to upgrade your Java app (and build) from Java8 to Java11. Can you build your app locally (not in CI pipeline) with Java 11? – sytech Dec 14 '21 at 18:38
  • Yes, I can build and lauch it locally – Vladimir Fisher Dec 14 '21 at 18:52
  • I found the solution. The beginnig of "yml" file is: image: openjdk:11-jdk variables: ANDROID_COMPILE_SDK: "31" ANDROID_BUILD_TOOLS: "32.0.0" SDK_TOOLS: "7583922" # from https://developer.android.com/studio/#command-tools – Vladimir Fisher Dec 16 '21 at 14:55
  • before_script: - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${SDK_TOOLS}_latest.zip - unzip -q android-sdk.zip -d android-sdk-linux - rm android-sdk.zip - export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/ - android-sdk-linux/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --update - echo y | android-sdk-linux/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}" "build-tools;${ANDROID_BUILD_TOOLS}" – Vladimir Fisher Dec 16 '21 at 14:56
  • - chmod +x ./gradlew – Vladimir Fisher Dec 16 '21 at 14:56
  • This question is exactly the same as my question. It is not a duplicate of the question in reference and it should be re-opened. The same error occurs in my environment upgrading to Java 11 from Java 8 in gitlab and I created a pipeline with the comments above but it still fails with the same error when accepting the license agreement in the CI script. – Nexus7_2012 Jan 07 '22 at 16:47

0 Answers0