【发布时间】:2015-12-05 10:20:53
【问题描述】:
这个问题让我连续两天倒退,此时我变得非常绝望。正如问题描述所述,我需要 OpenCV 2.4.11 java 库 32 位版本,该版本将在运行 Yosemite 的 Mac 上与 JDK 1.6 一起运行。
我需要这个,因为我正在使用的另一个库需要 32 位 (and this is only available with JDK 1.6)。因此我使用 JDK 1.6 并传递 VM 参数-d32。
我主要有两个尝试:
对于这两次尝试,我首先将我的默认 JDK 设置为 6:
$nano .bash_profile //Opening the Bash Profile
export JAVA_HOME=$(/usr/libexec/java_home -v 1.6) //Set Java_Home to JDK 1.6
(需要注意的是,以下两种方法在JDK 1.7 和64bit 下构建库都没有问题。)
方法 1: 我尝试使用 CMake 构建 OpenCV 库:
I go to the directory where I saved the library
mkdir build //Create a build directory
cd build //Go the build directory
cmake -G "Unix Makefiles" -D CMAKE_OSX_ARCHITECTURES=i386 -D CMAKE_C_FLAGS=-m32 -D CMAKE_CXX_FLAGS=-m32 ..
(我从this线程找到这个方法)
这次尝试的旅程到此结束,因为链接 Java 组件时出现问题:
-- Could NOT find JNI (missing: JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
和
-- Java:
-- ant: /usr/local/bin/ant (ver 1.9.6)
-- JNI: NO
-- Java tests: NO
完整的输出可以在here找到。
事实证明这是 CMake 的一些问题,我尝试了 this thread 的建议。修改FindJNI.cmake并没有解决问题。
方法 2 我尝试使用 HomeBrew 构建 OpenCV 库:
brew tap homebrew/science
brew install opencv --with-java --universal
构建顺利。一旦我找到 .jar 和 .dylib 并在 Eclipse 中创建 OpenCV 库并运行项目,我会收到以下错误:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/opencv/core/Point : Unsupported major.minor version 51.0
这意味着它不是使用 JDK 1.6 构建的。
其他想法/尝试:
- 在其他计算机上尝试这些方法。我不得不停下来,因为我 在设置 cmake 和 homebrew 时遇到了麻烦,因为计算机 没有设置为“开发人员”计算机的地方,即他们没有 Git, XCode 等
- 使用 JDK 1.5。原来优胜美地不支持JDK,但我发现 this thread 我该如何尝试启动并运行它。
- 尝试使用较早版本的 OpenCV。我尝试了 2.4.10 版,但是 遇到了同样的问题。
【问题讨论】:
-
我知道它不便宜,但您可能需要更新。
-
安装最新的Java 6 JDK from Apple 为我解决了一个不同的、长期存在的 32 位库问题。作为参考,我看到
build 1.6.0_65-b14-468-11M4833。 -
@PeterLawrey 更新什么?
-
@trashgod 谢谢你,我会试试的! (不过我可能已经安装了那个版本)
-
看起来是一个非常具体的问题,在这里不太适合。 OpenCV 是无关的。只需询问如何使用 OS X 找到 32 位的 Java 1.6。或者按照 Peter 的建议,将您需要的任何库更新为不需要 32 位 Java 的库。
标签: java macos opencv cmake homebrew