2012-01-15 147 views
3

我正在使用库native-tray-adapter,它需要库jni-utils-1.0确保Ubuntu中的图标没有透明背景。JVM在eclipse中运行,使用SIGSEGV在外面崩溃

我的程序用关闭菜单项创建菜单关闭程序。当我在eclipse中运行该程序时,它工作正常,我可以与该图标进行交互,而不会出现任何问题。当我将文件导出到可运行jar文件时,当我尝试关闭程序时,java虚拟机崩溃,程序可以通过右键单击显示菜单,但是单击菜单会导致崩溃。

# A fatal error has been detected by the Java Runtime Environment: 
# 
# SIGSEGV (0xb) at pc=0xb6d3f746, pid=6193, tid=2121870192 

这发生在sun和open运行环境中。我也尝试将虚拟机作为客户端和可可运行,但在客户端中,问题相同,但是在可可虚拟机中没有崩溃,但它没有对与图标的任何交互作出正确反应。

当我运行虚拟机的说法-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>帮助>关于>安装的详情>配置和该命令的目录匹配

$ which java 

一些额外的细节

os: ubuntu 11.10 
eclipse version: 3.7.0 
eclipse library: java6-openjdk 
java version: "1.6.0_26" 

如果需要更多信息,随时提问。有错误日志,但我不知道这将是多么有用,以及我需要发布哪些部分。值得赞赏的是,为什么会出现这种情况,一种使虚拟机与eclipse相同的方法,或者使用标准Java TrayIcon去除ubuntu中显示的白色背景的另一种方法,我们将不胜感激。

编辑

我发现一个问题,我出口的jar文件的方式撒谎。当我在eclipse罐出口选自:

  1. 提取所需的库到生成的JAR

  2. 拷贝所需的库到子文件夹旁边生成的JAR

我能够正确地与图标进行交互。我仍然不完全确定问题是什么,因为我认为链接仍然表现出相同的独立库打包在JAR内部或外部。

这是eclipse包装中的错误还是存在其他一些问题?
当程序试图读取或者被分配给它,或编写只能读取存储器中的存储器外部写时生成此信号:> -

欢呼声

+1

你的类路径 – 2012-02-27 21:05:30

回答

-1

要从http://www.gnu.org/software/libc/manual/html_node/Program-Error-Signals.html报价。 (实际上,只有当程序远离外部才能被系统的内存保护机制检测到时,信号才会出现。)名称是“分段违例”的缩写。

获取SIGSEGV条件的常用方法包括取消引用空指针或未初始化的指针,或者当您使用指针逐步遍历数组但未能检查数组的末尾时。它在不同的系统中是不同的,取消引用空指针是生成SIGSEGV还是SIGBUS