【问题标题】:Running SimpleOpenNI and leJOS in same project在同一个项目中运行 SimpleOpenNI 和 leJOS
【发布时间】:2013-01-18 05:11:15
【问题描述】:

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

为了实现这一点,我们为 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

当我下载 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?谁能告诉我这个错误究竟是什么意思?

【问题讨论】:

    标签: eclipse build lejos-nxj simple-openni


    【解决方案1】:

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

    关于java.lang.Thread的错误信息可能是因为classes.jar中的java.lang.Thread与你PC上JVM自带的java.lang.Thread不兼容。

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 2023-04-02
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      相关资源
      最近更新 更多