OpenNI UserTracker.java示例崩溃

时间:2011-07-26 14:38:19

标签: java kinect openni

我在Github上从源代码构建了OpenNI和Sensor并安装了Nite。我已经在Debian上使用2.6.39内核和不同版本的Java进行了测试,并在另一台使用Lubuntu 11.04和OpenNI unstable和avin2 Sensor的计算机上进行了测试 - 结果相同。我还测试了预建的二进制文件。

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:我现在设置了一个赏金,这里是一个详细的日志文件,并从Lubuntu 11.04上最新的不稳定版OpenNI,NITE和avin2的SensorKinect转储:http://pastebin.com/anG18agp http://pastebin.com/mAkf0G6M

1 个答案:

答案 0 :(得分:6)

OpenNI的java包装器类中存在错误:

在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);
}

但是你不应该释放一个用newStringUTF分配的字符串...因此它会崩溃.. 请参阅此处以获取示例:http://www.velocityreviews.com/forums/t144581-crash-while-calling-releasestringutfchars-for-newstringutf-string.html

获取源代码...取消注释发布行..构建OpenNI.jni.dll并运行usetracker.java!

祝你好运, 大卫