【问题标题】:Build OpenCV JDK 6 32 bit for Mac为 Mac 构建 OpenCV JDK 6 32 位
【发布时间】: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


【解决方案1】:

你可以做的是运行两个程序。一个 32 位和一个 64 位。每个都通过 TCP 与另一个对话,例如套接字、RMI、消息传递。

这样您可以同时使用 32 位和 64 位库。

【讨论】:

  • 嘿彼得,我正在考虑这是一个选项,但我认为它太慢了。感谢上帝,我终于设法解决了这个问题(它慢慢让我发疯了),我将写一篇博客文章,介绍我如何为遇到同样问题的任何可怜的灵魂做到这一点。原来修改 FindJNI.cmake 文件解决了(我第一次尝试时肯定做错了什么)。
  • 谢谢你的帮助:)
  • @LukeTaylor 如果您不需要这样做会更容易,但您应该能够相当轻松地在 Mac 上获得 1 GB/s 和 30 微秒的延迟。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2011-03-24
  • 2013-01-13
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 2011-10-18
相关资源
最近更新 更多