CircleCI-Public / android-orb

An orb for working with Android on CircleCI
https://circleci.com/developer/orbs/orb/circleci/android
MIT License
41 stars 25 forks source link

Java 17 is not being set to the environment #77

Closed rjsuzuki closed 1 year ago

rjsuzuki commented 1 year ago

Orb version

2.3.0

What happened

The documentation states that 17 is now the default, but 11 was still being applied. My build.gradle files are targeting Java 17, but ran into the same problem so I tried to explicitly set java 17 in the config.yml, and then this error occurred. Either way, I'm unable to have a proper JAVA17 environment in circleci.

  build_debug_job:
    <<: *android_config
    steps:
      - checkout
      - android/change-java-version:
          java-version: 17
#!/bin/bash -eo pipefail
#!/bin/bash
 CURRENT_JAVA_VER="$( java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1 )"
        CURRENT_JAVAC_VER="$( javac -version 2>&1 | head -1 | cut -f 2- -d ' ' | sed '/^1\./s///' | cut -d'.' -f1 )"
        echo "Current Java Version: $CURRENT_JAVA_VER"
        echo "Current Java Compiler Version : $CURRENT_JAVAC_VER"
        if [ "$CURRENT_JAVA_VER" -ne "${PARAM_JAVA_VER}" ]; then
          if [ "${PARAM_JAVA_VER}" -eq 8 ] || [ "${PARAM_JAVA_VER}" -eq 17 ]; then
            if [ "${PARAM_JAVA_VER}" -eq 8 ]; then
              sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
            else
              sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java
            fi
            sudo update-alternatives --set javac /usr/lib/jvm/java-"${PARAM_JAVA_VER}"-openjdk-amd64/bin/javac
          else
            sudo apt install openjdk-"${PARAM_JAVA_VER}"-jdk
            sudo update-alternatives --set javac /usr/lib/jvm/java-"${PARAM_JAVA_VER}"-openjdk-amd64/bin/javac
            sudo update-alternatives --set java /usr/lib/jvm/java-"${PARAM_JAVA_VER}"-openjdk-amd64/bin/java
          fi
          echo "export JAVA_HOME=/usr/lib/jvm/java-${PARAM_JAVA_VER}-openjdk-amd64" >> ~/.bashrc
          echo "export PATH=$JAVA_HOME/bin:$PATH" >> ~/.bashrc
        fi
        NEW_JAVA_VER="$( java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1 )"
        NEW_JAVAC_VER="$( javac -version 2>&1 | head -1 | cut -f 2- -d ' ' | sed '/^1\./s///' | cut -d'.' -f1 )"
        echo "New Java Version : $NEW_JAVA_VER"
        echo "New Java Compiler Version : $NEW_JAVAC_VER"
Current Java Version: 11
Current Java Compiler Version : 11
update-alternatives: error: alternative /usr/lib/jvm/java-17-openjdk-amd64/bin/java for java not registered; not setting

Exited with code exit status 2
CircleCI received exit code 2

Expected behavior

JAVA 17 circleci environment should be configured to be able to resolve compile time errors related to the Gradle 8.0's requirements.

rjsuzuki commented 1 year ago

False alarm. I forgot to update the docker image.

jmiecz commented 1 year ago

@rjsuzuki what did you do to resolve your issue?

rjsuzuki commented 1 year ago

@rjsuzuki what did you do to resolve your issue?

For our project, making sure we had the appropriate docker image (specific to our needs) and enough memory resolved our issue:

docker:
  - image: cimg/android:2023.06.1-node  # https://circleci.com/developer/images/image/cimg/android
resource_class: xlarge