我正在尝试在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
我没有任何调试本机代码问题的经验,并希望就如何解决问题提出一些建议。
感谢阅读。
答案 0 :(得分:1)
Raspberry PI基于ARMv6架构处理器。 Debian armhf需要ARMv7(或更高版本)。因此,非法指令异常正是我所期望的。
Debian armel分发在RPI上运行。 但是,如果要将这些软件包添加到诸如raspian安装之类的软件包中,那么这不太可行,并且您需要从raspian存储库中获取软件包。
答案 1 :(得分:0)
堆栈跟踪表明您的程序触发了SIGILL
SIGILL SIGILL信号在尝试时发送给进程 执行非法,畸形,未知或特权指令。
除非您编写本机代码,否则此错误不是您的错误或做法。尝试升级到最新的JDK(Java7 update 45
)以查看是否可以修复它。
您还可以尝试使用-Xint
标志运行Java进程,以防止动态编译任何代码。虽然不是长期解决方案,但它可以帮助确定错误发生的位置。在您的跟踪中,它似乎没有在动态编译的代码中崩溃。