2013-12-22 2 views
1

Я пытаюсь запустить программу с использованием Java 3d на малине Pi, и у меня возникают проблемы с родными библиотеками. Я нашел версию, скомпилированные для ARM на сайте DEBiAN здесьОшибка сегментации в Java 3D на Raspberry Pi

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. Для armhf Debian требуется ARMv7 (или более поздняя версия). Следовательно, исключение незаконной инструкции - именно то, что я ожидаю.

Debian armel distribution работает на RPI. Однако, если вы добавляете эти пакеты к чему-то вроде установки raspian, это вряд ли сработает, и вам нужно будет получить ваши пакеты из raspian репозитория.

+0

А, это интересно, спасибо. В любом случае, я не вижу доступной версии библиотеки, но если бы я мог получить источник, теоретически я должен был бы скомпилировать ее на Pi? – user1111284

+0

Собственно, поцарапайте, что есть доступный пакет Raspbian. Теперь код выдает исключение, но это прогресс: p Спасибо! – user1111284

0

StackTrace указывает, что программа вызвала SIGILL

SIGILL SIGILL посылается сигнал процессу, когда он пытается выполнить недопустимую, искаженный, неизвестный или привилегированную команду.

Если вы не написали собственный код, эта ошибка не ваша ошибка или выполнение. Попробуйте обновить до последнего JDK (Java7 update 45), чтобы узнать, исправляет ли он это.

Вы также можете попробовать запустить Java-процесс с флагом -Xint, чтобы предотвратить динамический компиляция любого кода. Хотя это не долгосрочное решение, оно может помочь определить, где происходит ошибка. В вашей трассировке он, похоже, не разбивается на динамически скомпилированный код.