可能你所缺少的是蚂蚁,这是一个面向java的构建工具.
当你去:
cmake -D BUILD_SHARED_LIBS=OFF ../opencv-2.4.5/
(即您正在为您的机器配置make),请检查说明java的部分.应该这样说(可能有不同的路径/版本):
-- Java:
-- ant: /usr/bin/ant (ver 1.8.2)
-- JNI: /usr/lib/jvm/java-6-openjdk/include /usr/lib/jvm/java-6-openjdk/include /usr/lib/jvm/java-6-openjdk/include
-- Java tests: YES
当我第一次运行cmake,我有这个:
-- Java:
-- ant: NO
-- JNI: NO
-- Java tests: YES
哪个表示它找不到蚂蚁,所以没有创建一个.jar文件.
我只是使用存储库中的版本:
sudo apt-get install ant
我再次运行cmake,上面的选项,通过蚂蚁的路径(我得到JNI免费!).
注意:您可能想要非常仔细地阅读cmake的输出,因为它告诉您在您的计算机上将要构建什么,并且您可能会丢失一些库.
如果您发现JNI仍然缺失.
cmake是(主要是第一个,方便的,可以解释为?)寻找jni.h,这应该是具体的$JAVA_HOME / include / jni.h所以你需要设置$JAVA_HOME到你的jdk的主文件夹.
我使用哪个javac和ls -l跟随一系列符号链接,以确定我的java 1.7安装在哪里.你也可以使用locate jni.h来处理树,或者简单地看看/usr/lib / jvm或类似的内容.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
你可能想要检查一下你有没有权利
ls $JAVA_HOME/bin/javac
/usr/lib/jvm/java-7-openjdk-amd64/bin/javac
ls $JAVA_HOME/include/jni.h
/usr/lib/jvm/java-7-openjdk-amd64/include/jni.h
有趣的是,当我再次运行cmake命令时,它会拾取一个不同的JNI文件夹:
-- JNI: /usr/lib/jvm/java-7-openjdk-amd64/include /usr/lib/jvm/java-7-openjdk-amd64/include /usr/lib/jvm/java-7-openjdk-amd64/include
一旦你有了,运行make命令.如果你痴迷,你会看到一堆.java文件已经过去了.无论哪种方式,最终都会在./bin文件夹中使用.jar文件.(在我的情况下,它被称为opencv-245.jar,因为这是我下载的代码的版本).