jni 的 bazel:jni.h 找不到文件

bazel for jni: jni.h file not found

我正在尝试使用 bazel 构建我的 JNI 库(用 C 语言编写)。大约 4 小时后没有运气:"jni.h file not found"。如何将 JDK 包含目录放在搜索路径中?尝试使用绝对路径,但 bazel 拒绝这些路径。尝试为 JDK 使用 new_local_repository,但看不到如何使其工作。

这是 MacOS 10.12.6 上的 bazel 0.5.3,Java 1.8

你能依赖 @local_jdk//:jni_headerhttps://github.com/bazelbuild/bazel/blob/117da7a947b4f497dffd6859b9769d7c8765443d/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE 的其他魔法标签吗?但是,如果您使用的是自定义 --java_base,它将不起作用。

例如这对我有用:

cc_library(
    name = "foo",
    srcs = [ 
        "@local_jdk//:jni_header",
        "@local_jdk//:jni_md_header-linux",
        "foo.cc"
    ],
    includes = [ "external/local_jdk/include/linux" ],
)