azuremavenjava-8azure-java-sdk

Legacy JDK 8 project - Runtime error with Azure Java SDK


We want to integrate Azure Service bus Java SDk in a legacy project that has JDK 8. The project compiles fine, but spits out the following run time error:

'com/azure/spring/cloud/autoconfigure/implementation/context/AzureGlobalConfigurationEnvironmentPostProcessor has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0'

I understand that upgrading the JDK version is the recommended approach but we don't have the permission to upgrade the JDK of this legacy project. Also when I tried upgrading locally, there were tons of compiation issues.

Alternatively I've tried looking for JDK 8 compatible maven dependency versions of azure dependencies in the pom.

I have created an independent project to test this bit, it worked fine when pointed to JDK 17 but as soon as it's downgraded to JDK 8 it throws the same error.

The Azure Java SDK documentation says it supports jdk 8 onwards, but it doesn't seem to work.

Sharing my POM for your reference:

    <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.intellidealer</groupId>
    <artifactId>versapay-mobiuso</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>versapay-mobiuso</name>
    <description>Java Intellidealer App</description>
    <properties>

        <spring-cloud-azure.version>5.5.0</spring-cloud-azure.version>
    </properties>
    <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-webflux</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-websocket</artifactId>
            <version>5.3.18</version>
        </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>spring-cloud-azure-service</artifactId>
            <version>5.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>spring-cloud-azure-starter-servicebus</artifactId>
        </dependency>
    <dependency>
      <groupId>com.azure.resourcemanager</groupId>
      <artifactId>azure-resourcemanager-servicebus</artifactId>
      <version>2.36.0</version>
    </dependency>
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-autoconfigure</artifactId>
      <version>5.5.0</version>
    </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.azure.spring/spring-cloud-azure-starter-integration-servicebus -->
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-integration-servicebus</artifactId>
      <version>5.10.0</version>
    </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
    <!--    <dependency>-->
<!--      <groupId>com.azure.resourcemanager</groupId>-->
<!--      <artifactId>azure-resourcemanager</artifactId>-->
<!--      <version>2.36.0</version>-->
<!--    </dependency>-->
  </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.azure.spring</groupId>
                <artifactId>spring-cloud-azure-dependencies</artifactId>
                <version>${spring-cloud-azure.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>8</release>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Solution

  • It looks like you are using version 5.5.0 for Spring Cloud Azure libraries. This version requires Spring Boot 3.x and Java 17 or higher. For Java 8, try using version 4.x.x.

    See the Spring Cloud Azure Support Status for more details on what versions are supported.

    Here's the note from the link above that documents the Java version support.

    NOTE: Spring Boot 2.x requires Java 8 as minimum version, and Spring Boot 3.x requires Java 17 or higher. Please reference to Spring Framework JDK Version Range for detailed JDK version range a Spring Framework version supports.