在 a previous question我想实现 WndProc
来处理 WM_DEVICECHANGE
消息,以便了解我的 USB 设备何时连接或分离。
我设法解决了这个问题,但是......在某些情况下,JVM 崩溃并显示以下丑陋的错误消息:
A fatal error has been detected by the Java Runtime Environment: EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x1000cb77, pid=3448, tid=4432 JRE version: 6.0_17-b04 Java VM: Java HotSpot(TM) Client VM (14.3-b01 mixed mode, sharing windows-x86 ) Problematic frame: C 0x1000cb77 If you would like to submit a bug report, please visit: http://java.sun.com/webapps/bugreport/crash.jsp The crash happened outside the Java Virtual Machine in native code. See problematic frame for where to report the bug.
我发现,如果我在插入 USB 设备后快速关闭框架,它只会使 JVM 崩溃,因此可能未正确处理该消息。在错误消息中,它说存在“有问题的框架”,因此可能是我处理 WM_DEVICECHANGE 消息的隐藏静态窗口导致崩溃,但我不确定。
所以我的问题是在这种情况下可以做什么,或者什么可能导致 JVM 崩溃。欢迎提出任何建议。
问候,加博
最佳答案
有问题的帧是指堆栈帧(即正在运行的方法)。它不引用窗口(java.awt.Frame
或 javax.swing.JFrame
)。
关闭窗口是否会与 JNI 代码交互?
关于Java JNA WindowProc JVM 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791084/