Я использую библиотеку native-tray-adapter , для которой требуется библиотека jni-utils-1.0 , чтобы у значков в Ubuntu не было прозрачного фона.
Моя программа создает меню с пунктом закрытия меню закрытия программы. Когда я запускаю программу в eclipse, она работает нормально, и я могу без проблем взаимодействовать с иконкой. Когда я экспортирую файл в исполняемую флягу, виртуальная машина Java падает, когда я пытаюсь закрыть программу, программа может отобразить меню по щелчку правой кнопкой мыши, однако щелчок по меню вызывает сбой.
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xb6d3f746, pid=6193, tid=2121870192
Это происходит как на солнце, так и в открытой среде выполнения. Я также попытался запустить виртуальную машину как клиент и cacao, в клиенте проблема была та же, однако в cacao виртуальная машина не вылетала, но не реагировала должным образом на любое взаимодействие со значком.
Когда я запускал виртуальную машину с аргументом -Xcheck: jni, я получал сообщение об ошибке:
WARNING in native method: JNI call made with exception pending
FATAL ERROR in native method: Bad global or local ref passed to JNI
Aborted
Я предполагаю, что проблема заключается в библиотеке jni-utils, однако я не понимаю, почему eclipse может без проблем запустить программу, а затем она вылетает за пределы среды.
Я проверил каталог виртуальной машины в eclipse> справка> о> подробности установки> конфигурация, и это соответствует каталогу команды
$ which java
некоторые дополнительные детали
os: ubuntu 11.10
eclipse version: 3.7.0
eclipse library: java6-openjdk
java version: "1.6.0_26"
если вам нужна дополнительная информация, не стесняйтесь спрашивать. Есть журнал ошибок, однако я не знаю, насколько это будет полезно, и какие части мне нужно будет опубликовать.
Любая помощь в объяснении того, почему это может происходить, способ сделать виртуальную машину такой же, как у eclipse, или другой метод удаления белого фона, который отображается в Ubuntu с использованием стандартного Java TrayIcon's *. 1025 *
EDIT
Я обнаружил, что проблема заключалась в том, как я экспортировал файл jar. Когда я выбрал в экспорте затмения банку:
извлечение необходимых библиотек в сгенерированный JAR
или
скопировать необходимые библиотеки в подпапку рядом с сгенерированным JAR
Мне удалось правильно взаимодействовать со значком. Я все еще не совсем уверен, в чем проблема, так как я думал, что связывание все равно будет вести себя так же, как независимые библиотеки упакованы внутри или вне JAR.
Это ошибка в упаковке eclipse или есть какая-то другая проблема?
ура