def get_supported_jdk_versions()

in ccmlib/common.py [0:0]


def get_supported_jdk_versions(cassandra_version, install_dir, for_build, env):
    build_versions = None
    if install_dir:
        build_versions = get_supported_jdk_versions_from_dist(install_dir)
    run_versions = build_versions

    # If the supported Java versions are not available from the distribution, use the known defaults
    if cassandra_version and not isinstance(cassandra_version, LooseVersion):
        cassandra_version = LooseVersion(cassandra_version)

    isCassandraUseJDK11Set = "CASSANDRA_USE_JDK11" in env and (env["CASSANDRA_USE_JDK11"].lower() in ['true', 'yes', 'on'])
    if build_versions is None:
        if cassandra_version and cassandra_version >= LooseVersion('5.0'):
            build_versions = [11, 17]
            run_versions = [11, 17]
            info("Cassandra 5.0+ detected, using Java 11 and 17")
        elif cassandra_version and cassandra_version >= LooseVersion('4.0'):
            if isCassandraUseJDK11Set:
                build_versions = [11]
                run_versions = [11]
                info("Cassandra 4.0+ detected, using Java 11 (Java 8 is excluded because the deprecated CASSANDRA_USE_JDK11 is set)")
            else:
                build_versions = [8, 11]
                run_versions = [8, 11]
                info("Cassandra 4.0+ detected, using Java 8 and 11")
        else:
            # Cassandra versions 3.x and 2.x
            build_versions = [8]
            run_versions = [8]
            info("Cassandra 3.x or 2.x detected, using Java 8")

    # Java versions supported by the Cassandra distribution
    return build_versions if for_build else run_versions