java - 如何使用命令行在 Linux 下使用 Java 构建 OpenCV?(将在 MapRe

最近我正在为我的毕业项目尝试 OpenCV。 我在 Windows 环境下取得了一些成功。并且因为 OpenCV 的 Windows 包附带了预构建的库,所以我不必担心如何构建它们。 但是由于该项目假设运行在一个集群上,每个节点都使用 CentOS 作为主机操作系统,所以我必须知道如何正确编译,并在 Linux 环境下运行这些库。

我已经使用 VirtualBox 设置了一个 VM,并在其上安装了 Ubuntu 13.04。 但到目前为止,我仍然找不到调整 CMakeList 设置以使 Java 成为构建目标的方法。 (一个 jar 和一个本地库,因此我可以在 MapReduce 程序中导入和使用它们) 以下是OpenCV桌面Java官方教程

http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

关于编译的部分非常简短。所以我还是不太明白。 是因为我错过了对 Java 的一些依赖吗?我已经安装了 JVM(Jre-7u7)。 还是因为我没有正确配置CMakeList.txt?

这是我到目前为止所做的事情,除了它是一个完全干净的 Ubuntu

  1. 安装的vim
  2. 已安装 g++
  3. 已安装 cmake
  4. 安装了 cmake-curses-gui
  5. 已安装 java7 JVM
  6. 下载适用于 Linux 的 OpenCV 包

目标环境为CentOS集群,每个节点的宿主操作系统为CentOS,项目为MapReduce程序。

提前致谢。

最佳答案

您可能缺少的是 ant,它是一个面向 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

这表明它找不到 ant,因此它没有创建 .jar 文件。 我只是使用存储库中的版本:

sudo apt-get install ant

我再次运行 cmake,使用上述选项,得到了 ant 的路径(我免费获得了 JNI!)。

注意:您可能需要相当仔细地阅读 cmake 的输出,因为它会告诉您它将在您的机器上构建什么,并且您可能缺少一些库。

如果您发现 JNI 仍然丢失。

cmake是(主要是?首先?方便?可以解释为?)寻找jni.h,具体应该是$JAVA_HOME/include/jni.h 所以需要设置$JAVA_HOME到你的 jdk 的主文件夹。

我使用 which javacls -l 来跟踪一系列符号链接(symbolic link),以识别我的 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 因为这是我下载的代码版本)。

关于java - 如何使用命令行在 Linux 下使用 Java 构建 OpenCV?(将在 MapReduce 中使用它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17386551/

相关文章:

.net - nuget安装退出代码9009

build - CMake 的新手想知道哪些尘土飞扬的角落?

android - 在 gradle 中添加对特定 productFlavor 和 buildTyp

java - 如何告诉 ant 使用特定的 javac 可执行文件进行构建?

iphone - 我可以将 "Build Active Architecture Only"设置为

android - crashlytics android studio gradle 构建失败

build - VSTS 构建所有分支

ant - Apache ant 无法识别 'for' 任务/宏,虽然我已经通过 taskdef 添

android - 如何生成 R.java

linux - 下载 tar.gz 包时不支持的协议(protocol)