gpt4 book ai didi

java - JVM 在 eclipse 中运行,在 SIGSEGV 外部崩溃

转载 作者:太空狗 更新时间:2023-10-29 11:23:28 25 4
gpt4 key购买 nike

我正在使用图书馆 native-tray-adapter ,这需要图书馆 jni-utils-1.0以确保 Ubuntu 中的图标没有透明背景。

我的程序创建了一个带有关闭菜单项的菜单,用于关闭程序。当我在 Eclipse 中运行该程序时,它工作正常,我可以毫无问题地与图标进行交互。当我将文件导出到可运行的 jar 时,当我尝试关闭该程序时,Java 虚拟机崩溃,该程序能够通过右键单击显示菜单,但是单击菜单会导致崩溃。

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

这在 sun 和开放运行时环境中都会发生。我还尝试将虚拟机作为客户端和 cacao 运行,在客户端中问题是相同的,但是在 cacao 中虚拟机没有崩溃但它没有对与图标的任何交互做出正确 react 。

当我使用参数 -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>help>about>installation details>configuration中检查了虚拟机的目录,这与命令的目录相匹配

$ 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 jar 导出中选择时:

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

  2. 将所需的库复制到生成的 JAR 旁边的子文件夹中

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

这是eclipse打包的错误还是有其他问题?

干杯

最佳答案

引用自http://www.gnu.org/software/libc/manual/html_node/Program-Error-Signals.html -->:
当程序试图在为其分配的内存之外读取或写入,或写入只能读取的内存时,会产生此信号。 (实际上,只有当程序运行到足以被系统的内存保护机制检测到的程度时,信号才会出现。)该名称是“segmentation violation”的缩写。

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

关于java - JVM 在 eclipse 中运行,在 SIGSEGV 外部崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com