Raspberry Pi上Java 3D中的分段错误

时间:2013-12-22 01:23:29

标签: java arm raspberry-pi java-3d

我正在尝试在Raspberry Pi上使用Java 3d运行程序,而且我在使用本机库时遇到了一些问题。我在debian网站上找到了为ARM编译的版本

http://packages.debian.org/en/wheezy/armhf/libjava3d-jni/download

我也试过'dfsg-9'版本。

当我尝试运行程序时,将打印以下输出:

java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode)

 A fatal error has been detected by the Java Runtime Environment:

  SIGILL (0x4) at pc=0xa6e5b9e2, pid=7251, tid=3057575024

 JRE version: Java(TM) SE Runtime Environment (7.0_40-b43) (build 1.7.0_40-b43)
 Java VM: Java HotSpot(TM) Client VM (24.0-b56 mixed mode linux-arm )
 Problematic frame:
 C  [libj3dcore-ogl.so+0x69e2]  Java_javax_media_j3d_NativePipeline_getAWT+0x11

我没有任何调试本机代码问题的经验,并希望就如何解决问题提出一些建议。

感谢阅读。

2 个答案:

答案 0 :(得分:1)

Raspberry PI基于ARMv6架构处理器。 Debian armhf需要ARMv7(或更高版本)。因此,非法指令异常正是我所期望的。

Debian armel分发在RPI上运行。 但是,如果要将这些软件包添加到诸如raspian安装之类的软件包中,那么这不太可行,并且您需要从raspian存储库中获取软件包。

答案 1 :(得分:0)

堆栈跟踪表明您的程序触发了SIGILL

  

SIGILL SIGILL信号在尝试时发送给进程   执行非法,畸形,未知或特权指令。

除非您编写本机代码,否则此错误不是您的错误或做法。尝试升级到最新的JDK(Java7 update 45)以查看是否可以修复它。

您还可以尝试使用-Xint标志运行Java进程,以防止动态编译任何代码。虽然不是长期解决方案,但它可以帮助确定错误发生的位置。在您的跟踪中,它似乎没有在动态编译的代码中崩溃。