Make jvm_runtime.java_home expand Make variables.

RELNOTES: None.
PiperOrigin-RevId: 161383469
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index b3d8940..d2999d3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -1108,11 +1108,12 @@
   }
 
   /**
-   * Return a context that maps Make variable names (string) to values (string).
+   * Expands the make variables in {@code expression}.
    *
-   * <p>Uses {@NoopExpansionInterceptor}.
-   *
-   * @return a ConfigurationMakeVariableContext.
+   * @param attributeName the name of the attribute from which "expression" comes; used for error
+   *     reporting.
+   * @param expression the string to expand.
+   * @return the expanded string.
    */
   public String expandMakeVariables(String attributeName, String expression) {
     return expandMakeVariables(attributeName, expression, ImmutableList.<MakeVariableSupplier>of());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
index 0d15e60..37fbab5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
@@ -45,10 +45,13 @@
         PrerequisiteArtifacts.nestedSet(ruleContext, "srcs", Mode.TARGET);
     PathFragment javaHome = defaultJavaHome(ruleContext.getLabel());
     if (ruleContext.attributes().isAttributeValueExplicitlySpecified("java_home")) {
-      PathFragment javaHomeAttribute = PathFragment.create(
-          ruleContext.attributes().get("java_home", Type.STRING));
+      PathFragment javaHomeAttribute = PathFragment.create(ruleContext.expandMakeVariables(
+          "java_home", ruleContext.attributes().get("java_home", Type.STRING)));
       if (!filesToBuild.isEmpty() && javaHomeAttribute.isAbsolute()) {
         ruleContext.ruleError("'java_home' with an absolute path requires 'srcs' to be empty.");
+      }
+
+      if (ruleContext.hasErrors()) {
         return null;
       }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java
index ef52686..9d4ae42 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeRule.java
@@ -36,7 +36,10 @@
         <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
         .add(attr("srcs", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE).mandatory())
         /* <!-- #BLAZE_RULE(java_runtime).ATTRIBUTE(java_home) -->
-        The relative path to the root of the runtime.
+        The path to the root of the runtime.
+        Subject to <a href="${link make-variables}">"Make" variable</a> substitution.
+        If this path is absolute, the rule denotes a non-hermetic Java runtime with a well-known
+        path. In that case, the <code>srcs</code> attribute must be empty.
         <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
         .add(attr("java_home", STRING))
         .add(attr("output_licenses", LICENSE))