4

我正在尝试使用 maven 构建一个依赖于 OpenCV 计算机视觉库的 JNI 包装器的项目。我已经能够通过使用 FreeHEP 的 NAR maven 插件在此处“maven-ize”OpenCV 包装器:http : //ubaa.net/shared/processing/opencv/,但该插件的文档有些缺乏。

我已经能够创建一个依赖于 OpenCV jni 项目(我称之为 OpenCVJava)的项目(imagedetect)。imagedetect 将编译,但是,任何测试、集成测试或包目标都会失败,并显示有关 java.library.path 中缺少库的错误。

!!! required library not found : no OpenCV in java.library.path
Verify that the java.library.path property is correctly set and 'libcxcore.so', 'libcv.so', 'libcvaux.so', 'libml.so', and 'libhighgui.so' are placed (or linked) in one of your system shared libraries folder

这尤其令人沮丧——我知道解决这个问题的唯一方法是以某种方式追踪 opencv 库的 .nar 文件,手动提取它们,设置 java.library.path,然后调用 gnaraly java 命令来实际执行具有正确类路径/库路径的测试/应用程序。这是行不通的——特别是如果这个问题持续存在于传递依赖中。

我怎样才能使这个构建/测试/执行系统更干净?我没有使用 FreeHEP,但我想坚持使用 maven,因为它使我们最常见的用例变得更加简单。

FreeHEP Nar 插件:http: //java.freehep.org/freehep-nar-plugin/intro.html

4

1 回答 1

4

我对 FreeHEP 不熟悉,但是如果您在设置 surefire 上的 java.library.path 以运行您的测试时遇到问题,我在以下位置找到了一个示例:http ://buildanddeploy.com/node/14 这有点涉及发布,但展示了如何让 maven 将本机库复制到一个目录,然后您将 java.library.path 指向该目录。过去我自己也使用过类似的方法。

还要看错误,是否需要设置 LD_LIBRARY_PATH 来修复它?如果是这样,您也应该在 Maven 中获得此设置。

这是一个如何为surefire设置的示例(来自http://docs.codehaus.org/display/MAVENUSER/Projects+With+JNI):maven-surefire-plugin once target/tmplib java.library.tmpdir target/tmplib

于 2009-05-12T21:42:40.310 回答