Shell.open()非常重要!
今天在做SWT中顯示OCX控件,照著Demo寫的,但是不知道為什么每次執行到:Variant pVarResult = auto.invoke(dispIdMember, rgvarg);
JVM都會直接退出~error如下:
# # An unexpected error has been detected by HotSpot Virtual Machine: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x73d321b9, pid=3696, tid=2208 # # Java VM: Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode, sharing) # Problematic frame: # C [MFC42.DLL+0x21b9] # # An error report file with more information is saved as hs_err_pid3696.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # [error occurred during error reporting, step 270, id 0xc0000005] |
尋便了網絡也沒有解決辦法,剛開始以為是JVM版本的問題,于是換了3個版本都是同樣的問題~真是郁悶!
最后通過和Demo代碼的比較,發現Demo中有一句shell.open(),注釋掉此句,Demo也是引起JVM退出!在代碼中加入shell.open(),搞定!
原來這個open方法還有這么多的玄機啊,但是javadoc上卻只字未提!
客戶虐我千百遍,我待客戶如初戀!