2011-07-26 60 views
15

我在Github上構建了OpenNI和Sensor,並安裝了Nite。我已經在Debian上使用2.6.39內核和不同版本的Java在另一臺計算機上測試了這一點,使用Lubuntu 11.04以及OpenNI unstable和avin2 Sensor--結果相同。我還測試了預編譯的二進制文件。OpenNI UserTracker.java示例崩潰

C++和.NET中的UserTracker示例工作正常,但UserTracker.java運行,檢測到我的輪廓,然後在做出校準姿勢時JVM崩潰。這是在飛機墜毀前的輸出:

New user 1 
Pose Psi detected for 1 

我已經試過玩弄的代碼,但我不能找到一段代碼,導致它 - 它不PoseDetectedObserver.update崩潰。

這裏是有問題的鏈接,例如:https://github.com/OpenNI/OpenNI/blob/master/Samples/UserTracker.java/org/OpenNI/Samples/UserTracker/UserTracker.java

有其他人遇到這個問題,或者看到的東西可能是錯誤的?

編輯:我已經在SamplesConfig.xml開啓日誌記錄和Java樣本 輸出上啓動這些警告,而C++和.NET的樣本,只是 有最後一個 - 這是我找到的唯一的區別在日誌中。

125 INFO  OpenNI version is 1.3.2 (Build 3)-Linux-x86 (Jul 28 2011 03:43:14) 
    141 INFO  Filter Info - minimum severity: WARNING, masks: ALL 
2482 WARNING Failed loading lib: /usr/lib/libXnVFeatures_1_3_0.so: undefined symbol: xnOSStrFormat 

2489 WARNING Failed to load '/usr/lib/libXnVFeatures_1_3_0.so' - missing dependencies? 
4080 WARNING Failed loading lib: /usr/lib/libXnVHandGenerator_1_3_0.so: undefined symbol: xnOSStrFormat 

4087 WARNING Failed to load '/usr/lib/libXnVHandGenerator_1_3_0.so' - missing dependencies? 
7581 WARNING Open named event: failed to open key file (2) - event might not exist... 

EDIT2:我現在已經設置了恩惠,這裏有一個詳細的日誌文件,並從OpenNI,NITE和avin2的SensorKinect的最新不穩定版本傾倒在Lubuntu 11.04:http://pastebin.com/anG18agphttp://pastebin.com/mAkf0G6M

+1

你嘗試使用了Sun JVM,使用最新的1.6版本? – sbridges

+0

是的,我目前使用sun java 1.6.0_26,但我也嘗試過使用openjdk 6和7 ...我認爲問題出在那些無法正確加載的.so文件中,因爲這是唯一的區別可以在C++和Java示例之間的詳細日誌中找到。 – HairyFotr

回答

6

有錯誤在java包裝類OpenNI的:

在org_OpenNI_NativeMethods.cpp是寫着:

void XN_CALLBACK_TYPE PoseDetectionHandler(XnNodeHandle hNode, const XnChar* strPose, XnUserID user, void* pCookie) 
{ 
    CallbackCookie* pCallback = (CallbackCookie*)pCookie; 
    JNIEnvSupplier supplier; 
    jstring jPose = supplier.GetEnv()->NewStringUTF(strPose); 
    supplier.GetEnv()->CallVoidMethod(pCallback->obj, pCallback->mid, jPose, user); 
    supplier.GetEnv()->ReleaseStringUTFChars(jPose, strPose); 
} 

但你是不是S upposed到releaseStringUTF與newStringUTF分配的串...因此它崩潰.. 見這裏的一個例子:http://www.velocityreviews.com/forums/t144581-crash-while-calling-releasestringutfchars-for-newstringutf-string.html

獲取源代碼取消對發佈線..打造OpenNI.jni.dll和usetracker.java將運行!

最好的問候, 大衛

+0

我嘗試構建Openni源代碼,但它給了我一些奇怪的錯誤。你有這個OpenNI.jni.dll嗎?你可以郵寄給我嗎?我正在使用win64。 – cooltechnomax

+0

cooltechnomax,我無法幫助你...嘗試在OpenNI羣組http://groups.google.com/group/openni-dev上發佈問題和錯誤...評論對於這些事情來說太短暫了更多的人閱讀外延。 – HairyFotr

+0

噢,用固定包裝的pullrequest已經在github上完成了,但還沒有關閉:https://github.com/OpenNI/OpenNI/pull/35 – HairyFotr