我们有一个项目,希望通过 Microsoft Kinect 传感器控制 Lego Mindstorms 机器人。我们决定使用 SimpleOpenNI with Processing 来读取传感器并使用 leJOS 来控制机器人,原因很简单:因为两者都是 Java 语言,我们可以指定一种RoboHandler
并从传感器读取类中调用它的方法。
为了实现这一点,我们为 Eclipse 下载了 leJOS 插件,创建了一个新的 leJOS NXT 项目,并将处理和 SimpleOpenNI 库放在构建路径中。请注意,要使用 SimpleOpenNI,需要没有 Java 的旧处理版本。
现在的问题是,安装 leJOS 时,它严格要求 32 位 Java JDK,所以我不得不下载这个并在安装时指向它。
此时,项目中有以下构建路径:
- LeJOS NXT Runtime(其中包含 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
当我下载 Processing without Java 版本时,我无法选择 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 -> Mindstorms?谁能告诉我这个错误到底是什么意思?