Java 使用 Jacob 调用 COM 接口大漠插件 dm.dll 报错
时间: 2017-12-09来源:开源中国
前景提要
HDC调试需求开发(15万预算),能者速来!>>>
JDK & JRE:

Jacob Jar:

Jacob dll:

Main.java package org.csaarg.gui; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; public class Main { public static void main(String[] args) { ComThread.InitSTA(); ActiveXComponent activeXComponent = new ActiveXComponent("dm.dmsoft"); Dispatch dispatch = (Dispatch) activeXComponent.getObject(); Dispatch.call(dispatch, "KeyPress", 91); ComThread.Release(); } }
大漠插件 dm.dll 已经注册到系统了,Call 的方法也是按照大漠接口文档来的,写法参考了博文: Java 之 Jacob 调用 COM 接口 DLL —— dm.dll
运行之后报错: Execution protection violation # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000003db, pid=7312, tid=0x00002428 # # JRE version: Java(TM) SE Runtime Environment (8.0_152-b16) (build 1.8.0_152-b16) # Java VM: Java HotSpot(TM) Client VM (25.152-b16 mixed mode windows-x86 ) # Problematic frame: # C 0x000003db # # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows # # An error report file with more information is saved as: # E:\DuanLuan\Workspaces\Project\My\QuickMacro\hs_err_pid7312.log # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. #
hs_err_pid7312.log: # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000003db, pid=7312, tid=0x00002428 # # JRE version: Java(TM) SE Runtime Environment (8.0_152-b16) (build 1.8.0_152-b16) # Java VM: Java HotSpot(TM) Client VM (25.152-b16 mixed mode windows-x86 ) # Problematic frame: # C 0x000003db # # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # --------------- T H R E A D --------------- Current thread (0x011e8c00): JavaThread "main" [_thread_in_native, id=9256, stack(0x01000000,0x01050000)] siginfo: ExceptionCode=0xc0000005, ExceptionInformation=0x00000008 0x000003db Registers: EAX=0x000003db, EBX=0x17af58f0, ECX=0x00de43e8, EDX=0x0000005b ESP=0x0104e950, EBP=0x0104e974, ESI=0x006efe30, EDI=0x15e78048 EIP=0x000003db, EFLAGS=0x00010212 Top of Stack: (sp=0x0104e950) 0x0104e950: 17b6184c 00de43e8 0000005b 15e78030 0x0104e960: 00000000 15e8f7a8 0104f108 17aedec8 0x0104e970: 00000000 0104e994 76d9cc68 006efe30 0x0104e980: 0000005b 0104e9d8 004e831c 04b52db0 0x0104e990: 0104e988 0104ea24 76d9cae2 006efe30 0x0104e9a0: 00000050 00000004 0000000a 00000002 0x0104e9b0: 004e838c 004e837c 15e78048 15b24090 0x0104e9c0: 011e8d40 0104ef40 011e8c00 15b42888 Instructions: (pc=0x000003db) 0x000003bb: [error occurred during error reporting (printing registers, top of stack, instructions near pc), id 0xc0000005] Register to memory mapping: EAX=0x000003db is an unknown value EBX=0x17af58f0 is an unknown value ECX=0x00de43e8 is an unknown value EDX=0x0000005b is an unknown value ESP=0x0104e950 is pointing into the stack for thread: 0x011e8c00 EBP=0x0104e974 is pointing into the stack for thread: 0x011e8c00 ESI=0x006efe30 is an unknown value EDI=0x15e78048 is an unknown value Stack: [0x01000000,0x01050000], sp=0x0104e950, free space=314k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C 0x000003db C [OLEAUT32.dll+0x1cc68] C [OLEAUT32.dll+0x1cae2] C [dm.dll+0xc8ee] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j com.jacob.com.Dispatch.invokev(Lcom/jacob/com/Dispatch;Ljava/lang/String;III[Lcom/jacob/com/Variant;[I)Lcom/jacob/com/Variant;+0 j com.jacob.com.Dispatch.invokev(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Lcom/jacob/com/Variant;[I)Lcom/jacob/com/Variant;+14 j com.jacob.com.Dispatch.callN(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;+15 j com.jacob.com.Dispatch.call(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;+7 j org.csaarg.gui.Main.main([Ljava/lang/String;)V+33 v ~StubRoutines::call_stub j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+56 j com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V+154 j com.sun.javafx.application.LauncherImpl.launchApplication(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V+409 v ~StubRoutines::call_stub j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+56 j sun.launcher.LauncherHelper$FXHelper.main([Ljava/lang/String;)V+52 v ~StubRoutines::call_stub --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x15b04000 JavaThread "Thread-2" daemon [_thread_in_native, id=9312, stack(0x178b0000,0x17900000)] 0x15afe400 JavaThread "JavaFX Application Thread" [_thread_in_native, id=9616, stack(0x16340000,0x16390000)] 0x15af8800 JavaThread "Thread-1" daemon [_thread_blocked, id=9448, stack(0x15750000,0x157a0000)] 0x15ac5000 JavaThread "QuantumRenderer-0" daemon [_thread_blocked, id=2644, stack(0x15980000,0x159d0000)] 0x151ca800 JavaThread "Service Thread" daemon [_thread_blocked, id=6240, stack(0x158d0000,0x15920000)] 0x15183000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=9868, stack(0x15800000,0x15850000)] 0x15182000 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=6372, stack(0x15510000,0x15560000)] 0x150e9800 JavaThread "Attach Listener" daemon [_thread_blocked, id=7836, stack(0x15650000,0x156a0000)] 0x150f2800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8944, stack(0x153b0000,0x15400000)] 0x00f94c00 JavaThread "Finalizer" daemon [_thread_blocked, id=8232, stack(0x15440000,0x15490000)] 0x00f8f000 JavaThread "Reference Handler" daemon [_thread_blocked, id=5888, stack(0x02a20000,0x02a70000)] =>0x0