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

时间:2017-09-11 16:58:12

标签: java-native-interface bazel

我正在尝试使用bazel来构建我的JNI库(用C语言编写)。大约4个小时后没有运气:“找不到jni.h文件”。如何将JDK包含目录放在搜索路径上?尝试使用绝对路径但是bazel拒绝那些。尝试为JDK使用new_local_repository,但无法看到如何使其工作。

这是MacOS 10.12.6上的bazel 0.5.3,Java 1.8

1 个答案:

答案 0 :(得分:1)

您能否依赖@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,则无效。

E.g。这对我有用:

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