You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Bazel构建Rust JNI绑定并解决动态库加载报错问题

问题原因

Java构建规则的deps参数仅接受Java类依赖,原生共享库直接填入deps会被规则忽略,Bazel既不会触发该Rust库的构建流程,也不会将其打包到运行时的runfiles目录,因此出现找不到库的报错。

修复方案

直接修改java/BUILD.bazel配置即可:

  1. 将Rust共享库依赖从deps移动到resources参数下,确保Bazel会构建该库并拷贝到runfiles对应路径
  2. 新增jvm_flags参数,将Rust库所在的runfiles路径添加到JVM的java.library.path中
    修改后的完整配置如下:
package(default_visibility = ["//visibility:public"])

load("@rules_java//java:defs.bzl", "java_binary")

java_binary(
    name = "java_binary",
    srcs = glob(["*.java"]),
    main_class = "Main",
    resources = [
        "//my_lib/rust:rust_bindings"
    ],
    jvm_flags = [
        "-Djava.library.path=my_lib/rust",
    ],
)
验证

修改完成后重新执行bazel run //my_lib/java:java_binary,即可正常输出:

Hello from Java
Hello from Rust

内容的提问来源于stack exchange,提问作者Billbucket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:39:01