Handle java versions with a single component

Fixes https://github.com/bazelbuild/bazel/issues/13406

Closes #13407.

PiperOrigin-RevId: 370846357
diff --git a/src/test/shell/bazel/bazel_with_jdk_test.sh b/src/test/shell/bazel/bazel_with_jdk_test.sh
index 9ae19d0..03cfde3 100755
--- a/src/test/shell/bazel/bazel_with_jdk_test.sh
+++ b/src/test/shell/bazel/bazel_with_jdk_test.sh
@@ -222,6 +222,41 @@
   expect_not_log "@bazel_tools//tools/jdk:runtime_toolchain_type -> toolchain @local_jdk//:jdk"
 }
 
+# Bazel shall detect JDK version and configure it with "local_jdk_{version}" and "{version}" setting.
+function test_bazel_detects_local_jdk_version11_with_only_major() {
+  # Fake Java version 11
+  mkdir -p jdk/bin
+  touch jdk/bin/javac
+  chmod +x jdk/bin/javac
+  cat >jdk/bin/java <<EOF
+#!/bin/bash
+
+echo " Property settings:" >&2
+echo "  java.version = 11 " >&2
+EOF
+  chmod +x jdk/bin/java
+  export JAVA_HOME="$PWD/jdk"
+  export PATH="$PWD/jdk/bin:$PATH"
+
+  bazel cquery \
+      --toolchain_resolution_debug=tools/jdk:runtime_toolchain_type \
+      --java_runtime_version=11 \
+      //java/main:JavaExample &>"${TEST_log}" || fail "Autodetecting a fake JDK version 11 and selecting it failed"
+  expect_log "@bazel_tools//tools/jdk:runtime_toolchain_type -> toolchain @local_jdk//:jdk"
+
+  bazel cquery \
+      --toolchain_resolution_debug=tools/jdk:runtime_toolchain_type \
+      --java_runtime_version=local_jdk_11 \
+      //java/main:JavaExample &>"${TEST_log}" || fail "Autodetecting a fake JDK version 11 and selecting it failed"
+  expect_log "@bazel_tools//tools/jdk:runtime_toolchain_type -> toolchain @local_jdk//:jdk"
+
+  bazel cquery \
+      --toolchain_resolution_debug=tools/jdk:runtime_toolchain_type \
+      --java_runtime_version=15 \
+      //java/main:JavaExample &>"${TEST_log}" || fail "Autodetecting a fake JDK version 11 and selecting it failed"
+  expect_not_log "@bazel_tools//tools/jdk:runtime_toolchain_type -> toolchain @local_jdk//:jdk"
+}
+
 # Failure to detect JDK version shall be handled gracefully.
 function test_bazel_gracefully_handles_unknown_java() {
   # Fake Java version 11
diff --git a/tools/jdk/local_java_repository.bzl b/tools/jdk/local_java_repository.bzl
index 90f4547..f2a7edb 100644
--- a/tools/jdk/local_java_repository.bzl
+++ b/tools/jdk/local_java_repository.bzl
@@ -29,9 +29,12 @@
         return None
 
     version_value = version_property[0][len("java.version = "):]
-    (major, minor, rest) = version_value.split(".", 2)
-
-    if major == "1":  # handles versions below 1.8
+    parts = version_value.split(".")
+    major = parts[0]
+    if len(parts) == 1:
+        return major
+    elif major == "1":  # handles versions below 1.8
+        minor = parts[1]
         return minor
     return major