我第一次测试vowpal_wabbit,基本上,我将在Docker容器上执行它,所以我已按照official download page的建议下载了预编译版本,显然它在预期内部工作了我的容器。
事实证明,我打算使用Java并调用VW-Wabbit(并且该选项虽然不容易,但是使用JNI - 后来检查由Indeed人创建的包装器)。但是,如果我在尝试加载本机库时使用预编译,它将无法找到它(一旦我没有执行任何编译/ make /其他),对吧?
鉴于:
static {
System.loadLibrary("vw_jni");
}
我想Java正试图在我的Linux中访问:“vw_jni” - > “vw_jni.so”,因为我没有编译,我没有。
提前致谢, 我在这里错过任何一点吗?
答案 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