我有以下配置:
1)Windows 10 64位
2)只有32位版本的应用程序,可通过COM获得。
我使用tlbimb.jar访问32位应用程序的.dll文件以生成所需的接口,并且成功了。
场景1:
我尝试使用Java 8 32位安装程序访问32位应用程序。 我可以通过COM成功调用方法,没有任何问题。
场景2:
我尝试使用Java 8 64位安装程序访问32位应用程序。 我收到一个错误消息:
1)Windows 10 64位
2)只有32位版本的应用程序,可通过COM获得。
我使用tlbimb.jar访问32位应用程序的.dll文件以生成所需的接口,并且成功了。
场景1:
我尝试使用Java 8 32位安装程序访问32位应用程序。 我可以通过COM成功调用方法,没有任何问题。
场景2:
我尝试使用Java 8 64位安装程序访问32位应用程序。 我收到一个错误消息:
Exception in thread "main" com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
我在Stackoverflow/Google上搜索了异常情况并进行了以下操作:
1)使用Sys64WOW/regsvr32.exe和System32/regsvr32.exe注册了应用程序的dll。
2)使用Sys64WOW/regsvr32.exe和System32/regsvr32.exe注册了com4j dll(32位和64位均可)。
3)将dll文件复制到Sys64WOW和System32文件夹中。
我已经单独完成了上述所有操作,检查了所有可能的组合。但使用64位Java时仍出现上述错误。
我尝试使用另一个桥接器(Jacob)。在32位Java上成功,在64位Java上失败。
我有一个问题想问懂行的人:是否有任何方法可以连接一个只提供Win32 COM dll[1]的应用程序,使用任何可用的Java/COM桥接器和Java 64位?或者说,32位COM + 64位Java无法连接?
[1]:我检查了OLE/COM Viewer,在类型库下只有一个条目“0 Win32 =”,这意味着没有Win64 COM dll,对吗?