使用Linux预编译二进制文件的Java / JNI的Vowpal wabbit

时间:2018-02-07 16:48:30

标签: java-native-interface vowpalwabbit

我第一次测试vowpal_wabbit,基本上,我将在Docker容器上执行它,所以我已按照official download page的建议下载了预编译版本,显然它在预期内部工作了我的容器。 enter image description here

事实证明,我打算使用Java并调用VW-Wabbit(并且该选项虽然不容易,但是使用JNI - 后来检查由Indeed人创建的包装器)。但是,如果我在尝试加载本机库时使用预编译,它将无法找到它(一旦我没有执行任何编译/ make /其他),对吧?

鉴于:

static {
        System.loadLibrary("vw_jni");
    }

我想Java正试图在我的Linux中访问:“vw_jni” - > “vw_jni.so”,因为我没有编译,我没有。

提前致谢, 我在这里错过任何一点吗?

1 个答案:

答案 0 :(得分:1)

问题在于使用autogen.sh

autogen.sh仅作为可能不熟悉/不受支持的环境的最后手段提供,其中提供的Makefile(和子目录*/Makefile s)可能不起作用。

除此之外,autogen.sh调用GNU automake来覆盖Makefile(基于探测环境)。

要生成JNI,您需要使用源附带的原始 Makefile运行make java

如果您已经覆盖了Makefile,请不要担心!您可以通过键入以下内容轻松恢复原件:

git checkout Makefile */Makefile

# Now you can
make java

产生了一个很好的vw java包装器:java/target/libvw_jni.so