2013-12-22 36 views
1

我正嘗試在Raspberry Pi上運行使用Java 3d的程序,並且遇到了本地庫的一些問題。我發現Debian網站上爲ARM編譯版本在這裏Raspberry Pi上的Java 3D中的分段錯誤

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 

我真的沒有任何經驗調試問題做本地代碼,我希望能就如何入手一些建議問題。

感謝您的閱讀。

+1

您是否將版本1.6與JOGL 2一起使用? http://tinyurl.com/cf47kcb – gouessej

+0

我還沒有意識到Java 3D已經回到開發階段,我會看看它。謝謝 – user1111284

+0

不客氣。 Java 3D在2012年重新開始維護。它仍然在積極維護,但沒有新功能可以實施。它仍然需要AWT,請確保您使用支持它的JVM。 – gouessej

回答

1

Raspberry PI基於ARMv6架構處理器。 Debian armhf需要ARMv7(或更高版本)。因此,非法指令例外正是我所期望的。

Debian armel發行版在RPI上運行。 但是,如果您將這些軟件包添加到類似raspian的安裝中,則這種方法不太可能奏效,並且您需要從raspian存儲庫獲取軟件包。

+0

啊,這很有趣,謝謝。我無法看到這個庫的一個armel版本,但是如果我能理解,我應該可以在Pi上自己編譯它嗎? – user1111284

+0

其實,從頭開始有一個可用的Raspbian軟件包。代碼現在拋出一個異常,但它的進展:p謝謝! – user1111284

0

堆棧跟蹤表明你的程序觸發,當它試圖 執行非法的,畸形的,未知的,或者特權指令SIGILL

SIGILL的SIGILL信號被髮送到進程。

除非您編寫本地代碼,否則此錯誤不是您的錯誤或行爲。嘗試升級到最新的JDK(Java7 update 45)以查看是否可以修復它。

您還可以嘗試使用-Xint標誌運行Java進程,以防止動態編譯任何代碼。雖然不是一個長期的解決方案,但它可能有助於確定錯誤發生的位置。在你的蹤跡中,它似乎沒有在動態編譯的代碼中崩潰。