Сбой образцов OpenTI UserTracker.java

Я построил OpenNI и Sensor из источника на Github и установил Nite. Я тестировал это на Debian с ядром 2.6.39 и с разными версиями Java, а на другом компьютере с Lubuntu 11.04, а также с OpenNI unstable и avin2 Sensor - тот же результат. Я также тестировал с помощью предварительно созданных двоичных файлов.

Образец UserTracker в С++ и .NET работает, но работает 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

Кто-нибудь еще столкнулся с этой проблемой или, возможно, видит, что может быть неправильным?

edit: я включил ведение журнала в SamplesConfig.xml и образцы Java  выведите эти предупреждения при запуске, а образцы С++ и .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/anG18agp http://pastebin.com/mAkf0G6M

Ответы

Ответ 1

есть ошибка в классах оболочки 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);
}

Но вы не должны выпускатьStringUTF строку, выделенную с помощью newStringUTF... поэтому она вылетает. См. Здесь пример: http://www.velocityreviews.com/forums/t144581-crash-while-calling-releasestringutfchars-for-newstringutf-string.html

Получить исходный код... Раскомментировать строку выпуска.. build OpenNI.jni.dll и usetracker.java будет запущен!

С уважением, Дэвид