2011-01-25 90 views
1

a previous question我想实现WndProc来处理WM_DEVICECHANGE消息,以便知道我的USB设备何时连接或分离。Java JNA WindowProc JVM崩溃

我设法解决这个问题,但是....在某些情况下,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. 

我发现它只有崩溃的JVM,如果我赶紧闭上我的框架插入我的USB设备后,可能会导致消息处理不当。在错误消息中,它说有一个“有问题的框架”,所以可能是我隐藏的静态窗口,处理WM_DEVICECHANGE消息导致崩溃,但我不确定。

所以我的问题是在这种情况下可以做什么,或者什么可能导致JVM崩溃。欢迎任何建议。

关于Gabor

回答

0

有问题的帧是指堆栈帧(即运行方法)。它确实是而不是是指一个窗口(java.awt.Framejavax.swing.JFrame)。

是否关闭窗口以某种方式与JNI代码交互?

+0

我不使用JNI,只有JNA。如果它有帮助,我可以发布代码。 – Gabor 2011-01-25 08:31:20