2015-12-05 128 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微秒的延遲。 –