diff --git a/java/common/rules/impl/java_binary_impl.bzl b/java/common/rules/impl/java_binary_impl.bzl
index a41a125..15ae89b 100644
--- a/java/common/rules/impl/java_binary_impl.bzl
+++ b/java/common/rules/impl/java_binary_impl.bzl
@@ -154,7 +154,10 @@
         if JavaInfo in dep:
             native_libs_depsets.append(dep[JavaInfo].transitive_native_libraries)
         if CcInfo in dep:
-            native_libs_depsets.append(dep[CcInfo].transitive_native_libraries())
+            if hasattr(dep[CcInfo], "_legacy_transitive_native_libraries"):
+                native_libs_depsets.append(dep[CcInfo]._legacy_transitive_native_libraries)
+            else:
+                native_libs_depsets.append(dep[CcInfo].transitive_native_libraries())
     native_libs_dirs = collect_native_deps_dirs(depset(transitive = native_libs_depsets))
     if native_libs_dirs:
         prefix = "${JAVA_RUNFILES}/" + ctx.workspace_name + "/"
diff --git a/java/private/java_info.bzl b/java/private/java_info.bzl
index bf793c5..65c6f2a 100644
--- a/java/private/java_info.bzl
+++ b/java/private/java_info.bzl
@@ -178,7 +178,8 @@
         cc_info = semantics.minimize_cc_info(cc_common.merge_cc_infos(cc_infos = [p.cc_link_params_info for p in providers]))
         result.update(
             cc_link_params_info = cc_info,
-            transitive_native_libraries = cc_info.transitive_native_libraries(),
+            transitive_native_libraries =
+                cc_info._legacy_transitive_native_libraries if hasattr(cc_info, "_legacy_transitive_native_libraries") else cc_info.transitive_native_libraries(),
         )
     else:
         result.update(
@@ -679,14 +680,22 @@
         cc_info = semantics.minimize_cc_info(cc_common.merge_cc_infos(cc_infos = transitive_cc_infos))
         result.update(
             cc_link_params_info = cc_info,
-            transitive_native_libraries = cc_info.transitive_native_libraries(),
+            transitive_native_libraries =
+                cc_info._legacy_transitive_native_libraries if hasattr(cc_info, "_legacy_transitive_native_libraries") else cc_info.transitive_native_libraries(),
         )
     else:
+        transitive_native_libraries = []
+        if native_libraries:
+            merged_cc_info = cc_common.merge_cc_infos(cc_infos = native_libraries)
+            if hasattr(merged_cc_info, "_legacy_transitive_native_libraries"):
+                transitive_native_libraries = [merged_cc_info._legacy_transitive_native_libraries]
+            else:
+                transitive_native_libraries = [merged_cc_info.transitive_native_libraries()]
         result.update(
             transitive_native_libraries = depset(
                 order = "topological",
                 transitive = [dep.transitive_native_libraries for dep in concatenated_deps.runtimedeps_exports_deps] +
-                             ([cc_common.merge_cc_infos(cc_infos = native_libraries).transitive_native_libraries()] if native_libraries else []),
+                             transitive_native_libraries,
             ),
         )
     return result, concatenated_deps
diff --git a/java/testutil.bzl b/java/testutil.bzl
index 6207583..4063ea6 100644
--- a/java/testutil.bzl
+++ b/java/testutil.bzl
@@ -5,6 +5,8 @@
 # TODO: consider eventually upstreaming to rules_cc
 
 def _cc_info_transitive_native_libraries(cc_info):
+    if hasattr(cc_info, "_legacy_transitive_native_libraries"):
+        return cc_info._legacy_transitive_native_libraries
     return cc_info.transitive_native_libraries()
 
 def _cc_library_to_link_static_library(library_to_link):
