Vowpal wabbit 与 Java / JNI 使用 linux 预编译二进制文件

Vowpal wabbit with Java / JNI using the linux precompiled binaries

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

事实证明,我打算使用 Java 并调用 VW-Wabbit(虽然不容易,但选项是使用 JNI - 后来检查了由 Indeed 人员创建的包装器).但是,如果我在尝试加载本机库时使用预编译,它不会找到它(一旦我没有做任何事情 compile/make/whatever),对吧?

鉴于:

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

我想 Java 正试图到达我的 Linux: "vw_jni" -> "vw_jni.so" 因为我没有编译,我没有。

提前致谢, 我在这里漏掉了什么吗?

问题是autogen.sh的使用。

autogen.sh 仅作为可能 unfamiliar/unsupported 环境的最后手段提供,其中提供的 Makefile(和子目录 */Makefiles)可能无法工作。

除其他外,autogen.sh 调用 GNU automake 覆盖 Makefile(基于对环境的探测)。

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

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

git checkout Makefile */Makefile

# Now you can
make java

导致良好的 vw java 包装:java/target/libvw_jni.so