在同一个项目中运行SimpleOpenNI和leJOS

时间:2013-01-03 16:21:14

标签: eclipse build lejos-nxj simple-openni

我们有一个项目,我们希望使用Microsoft Kinect传感器控制Lego Mindstorms机器人。我们决定使用SimpleOpenNI和Processing来读取传感器和leJOS来控制机器人的原因很简单:因为两者都是Java,我们可以指定一种RoboHandler并从传感器读取类中调用它的方法。 / p>

为了实现这一点,我们下载了eclipse的leJOS插件,创建了一个新的leJOS NXT项目,并将处理和SimpleOpenNI库放在构建路径中。请注意,要使用SimpleOpenNI,需要一个没有Java的旧处理版本。

现在的问题是,在安装leJOS时,它严格要求使用32位Java JDK,所以我必须下载它并在安装时指向它。

此时,以下构建路径位于项目中:

  • LeJOS NXT运行时(其中包括java.awt类)
  • core.jar(用于在eclipse中运行Processing)
  • SimpleOpenNI.jar

拥有所有这些,并设置第一个处理草图,如

import processing.core.*;

public class Test extends PApplet{
    (....)
}

导致以下错误代码:

Multiple markers at this line
    - The type java.awt.event.MouseMotionListener cannot be resolved. It is indirectly referenced from 
     required .class files
    - The type java.applet.Applet cannot be resolved. It is indirectly referenced from required .class files
    - The type java.awt.event.MouseListener cannot be resolved. It is indirectly referenced from required .class files
    - The hierarchy of the type FirstTry is inconsistent
    - The type java.awt.event.FocusListener cannot be resolved. It is indirectly referenced from required .class files
    - The type java.awt.event.KeyListener cannot be resolved. It is indirectly referenced from required .class files

当我下载没有Java版本的Processing时,我无法选择32位或64位版本。 SimpleOpenNI安装为64位版本。

当将64bit-JDK(eclipse工作空间默认值)添加为工作空间时,错误消失,但在尝试运行草图时,控制台中会打印以下错误:

Invalid layout of java.lang.Thread at name
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (javaClasses.cpp:128), pid=9176, tid=8740
#  fatal error: Invalid layout of preloaded class
#
# JRE version: 7.0_04-b22
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.0-b21 mixed mode windows-amd64 compressed oops)
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\Valentino\Desktop\workspaces\workspace_processing\RoboZeugs\bin\hs_err_pid9176.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#

因此,在我看来,JDK版本(32位和64位)存在问题,但必须有办法解决这个问题。有没有人经历过这个特定主题,甚至可能使用Kinect - >头脑风暴?任何人都可以告诉我这个错误完全意味着什么?

1 个答案:

答案 0 :(得分:2)

您正在混合用于与NXT砖上的JVM(即classes.jar中的所有内容)一起运行的类,其类设计为在PC上与完全成熟的JVM一起运行。 不要那样做。如果要远程控制NXT,请使用pccomms.jar和lib / pc中的所有其他内容。但是,当您在PC上启动Java程序时,切勿将class.jar或lib / nxt中的任何内容添加到类路径中。

关于java.lang.Thread的错误消息可能是因为classes.jar中的java.lang.Thread与PC上的JVM附带的java.lang.Thread无关。 / p>