diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
index a2c8068..2ffbb29 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeInfo.java
@@ -34,6 +34,7 @@
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
 import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuntimeInfoApi;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import javax.annotation.Nullable;
 
@@ -174,6 +175,11 @@
     return javaBinaryRunfilesPath;
   }
 
+  @Override
+  public SkylarkNestedSet skylarkJavaBaseInputs() {
+    return SkylarkNestedSet.of(Artifact.class, javaBaseInputs());
+  }
+
   // Not all of JavaRuntimeInfo is exposed to Skylark, which makes implementing deep equality
   // impossible: if Java-only parts are considered, the behavior is surprising in Skylark, if they
   // are not, the behavior is surprising in Java. Thus, object identity it is.
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeInfoApi.java
index e9aa1c6..c926833 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaRuntimeInfoApi.java
@@ -17,6 +17,7 @@
 import com.google.devtools.build.lib.skylarkbuildapi.platform.ToolchainInfoApi;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
 import com.google.devtools.build.lib.vfs.PathFragment;
 
 /** Information about the Java runtime being used. */
@@ -26,16 +27,15 @@
   @SkylarkCallable(
       name = "java_home",
       doc = "Returns the execpath of the root of the Java installation.",
-      structField = true
-  )
-  public PathFragment javaHome();
+      structField = true)
+  PathFragment javaHome();
 
   /** The execpath of the Java binary. */
   @SkylarkCallable(
       name = "java_executable_exec_path",
       doc = "Returns the execpath of the Java executable.",
       structField = true)
-  public PathFragment javaBinaryExecPath();
+  PathFragment javaBinaryExecPath();
 
   /** The runfiles path of the JDK. */
   @SkylarkCallable(
@@ -46,7 +46,7 @@
               + "by Bazel. In particular, when one needs the JDK during an action, "
               + "java_home should be used instead.",
       structField = true)
-  public PathFragment javaHomeRunfilesPath();
+  PathFragment javaHomeRunfilesPath();
 
   /** The runfiles path of the Java binary. */
   @SkylarkCallable(
@@ -57,5 +57,12 @@
               + "by Bazel. In particular, when one needs to invoke the JVM during an action, "
               + "java_executable_exec_path should be used instead.",
       structField = true)
-  public PathFragment javaBinaryRunfilesPath();
+  PathFragment javaBinaryRunfilesPath();
+
+  /** The files in the Java runtime. */
+  @SkylarkCallable(
+      name = "files",
+      doc = "Returns the files in the Java runtime.",
+      structField = true)
+  SkylarkNestedSet skylarkJavaBaseInputs();
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
index 50c7c22..aaaf3ad 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java
@@ -2405,4 +2405,30 @@
 
     assertThat(toolchainResolutionEnabled()).isTrue();
   }
+
+  @Test
+  public void testJavaRuntimeProviderFiles() throws Exception {
+    scratch.file("a/a.txt", "hello");
+    scratch.file(
+        "a/BUILD",
+        "load(':rule.bzl', 'jrule')",
+        "java_runtime(name='jvm', srcs=['a.txt'], java_home='foo/bar')",
+        "java_runtime_alias(name='alias')",
+        "jrule(name='r')");
+
+    scratch.file(
+        "a/rule.bzl",
+        "def _impl(ctx):",
+        "  provider = ctx.attr._java_runtime[java_common.JavaRuntimeInfo]",
+        "  return struct(",
+        "    files = provider.files,",
+        "  )",
+        "jrule = rule(_impl, attrs = { '_java_runtime': attr.label(default=Label('//a:alias'))})");
+
+    useConfiguration("--javabase=//a:jvm");
+    ConfiguredTarget ct = getConfiguredTarget("//a:r");
+    @SuppressWarnings("unchecked")
+    SkylarkNestedSet files = (SkylarkNestedSet) ct.get("files");
+    assertThat(prettyArtifactNames(files.toCollection(Artifact.class))).containsExactly("a/a.txt");
+  }
 }
