【问题标题】:OpenNI UserTracker.java sample crashesOpenNI UserTracker.java 示例崩溃
【发布时间】:2011-10-13 11:47:51
【问题描述】:

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

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/anG18agphttp://pastebin.com/mAkf0G6M

【问题讨论】:

  • 你试过使用sun jvm,使用最新的1.6版本吗?
  • 是的,我目前正在使用 sun java 1.6.0_26,但我也尝试过使用 openjdk 6 和 7...我认为问题出在那些无法正确加载的 .so 文件中,因为这是我可以在 C++ 和 Java 示例之间的详细日志中找到的唯一区别。

标签: java kinect openni


【解决方案1】:

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 将运行!

最好的问候, 大卫

【讨论】:

  • 我尝试构建 Openni 源代码,但它给了我一些奇怪的错误。你有这个 OpenNI.jni.dll 吗?可以邮寄给我吗。我正在使用win64。
  • cooltechnomax,我帮不了你...尝试在 OpenNI 组groups.google.com/group/openni-dev 上发布问题和错误... cmets 太短了,不适合这些东西,那里有更多人阅读.
  • 哦,已经在github上做了带有fixed wrapper的pullrequest,但是还没有关闭:github.com/OpenNI/OpenNI/pull/35
猜你喜欢
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 2012-10-07
  • 2011-03-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
相关资源
最近更新 更多