2015-12-05 45 views
1

这个问题让我回到连续2天,在这一点上我变得非常绝望。正如问题描述所述,我需要OpenCV 2.4.11 Java库32位版本,该版本将在运行Yosemite的Mac上与JDK 1.6一起运行。为Mac构建OpenCV JDK 6 32位

我需要这个,因为我使用的另一个库需要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和64位)

方法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 

的COM完整的输出可以找到here

事实证明,这是CMake的一些问题,我尝试了this thread的建议。修改FindJNI.cmake没有解决问题。

方法2我试着和自制建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和自制软件,因为计算机 没有设置为“开发人员”计算机,即他们没有Git, XCode等
  • 使用JDK 1.5。原来,Yosemite不支持JDK,但我发现 this thread我怎么能尝试启动并运行。
  • 尝试使用较早版本的OpenCV。我试过版本2.4.10但是 遇到了同样的问题。
+1

我知道这并不便宜,但您可能需要更新。 –

+1

安装最新的[来自Apple的Java 6 JDK](https://support.apple.com/kb/dl1572?locale=en_US)为我解决了另一个长期存在的32位库问题。作为参考,我看到'build 1.6.0_65-b14-468-11M4833'。 – trashgod

+0

@PeterLawrey更新什么? –

回答

0

你可以做的是有两个程序运行。一个32位和一个64位。每个人都通过TCP与其他人交谈,例如SOcket,RMI,消息。

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

+1

嘿,彼得,我正在考虑这个选项,但我认为它会太慢。感谢上帝,我设法最终解决了这个问题(这让我疯狂),我会写一篇博客文章,告诉我如何为那些正在经历同样问题的任何可怜的灵魂做到这一点。事实证明,修改FindJNI.cmake文件解决了它(我第一次尝试这个时,我一定犯了错误)。 –

+0

谢谢你的帮助:) –

+1

@LukeTaylor如果你不需要这样做,但你应该能够很容易地在Mac上的进程间获得1 GB/s和30微秒的延迟。 –