多年来,我们一直很好地使用JACOB使用Jacob.jar和Jacob.dll使用32位JVM来生成PDF。
由于各种原因,我们现在需要升级到64位JVM。我已经下载了最新的64位Jacob.jar和dll并安装并添加到了路径中,但是当我运行时,我得到了:

com.jacob.com.ComFailException: Can't co-create object
at com.jacob.com.Dispatch.createInstanceNative(Native Method)
at com.jacob.com.Dispatch.<init>(Dispatch.java:160)
at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:54)
at ...

我正在使用jre 1.8.0_131,Jacob.jar的清单是:-
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.7.0_79-b15 (Oracle Corporation)
Built-By: joe
Name: com.jacob
Specification-Title: JACOB : Java COM Bridge
Specification-Vendor: http://jacob-project.sourceforge.net
Implementation-Title: JACOB : Java COM Bridge Java libraries
Implementation-Version: 1.18 build 01 on 05-August-2015 05:01:11
Trusted-Library: true
Application-Name: Java-Windows Bridge
Permissions: all-permissions
Codebase: *

雅各布dll是Jacob-1.18-x64.dll
有人在使用64位JVM的JACOB方面取得了成功。专门用于生成PDF?
任何建议都会有所帮助,因为我已经为此奋斗了一段时间!
我读过的其他堆栈溢出线程:
Can't co-create object

非常感谢

最佳答案

我像这样用Java 1.8和Jacob-1.19-x64.dll来工作:

  • 将dll复制到:
  • C:\ Windows \ SysWOW64 \
  • C:\ Program Files \ Java \ jdk1.8.0_141 \ lib
  • C:\ Program Files \ Java \ jdk1.8.0_141 \ bin
  • 在注册表中,将注册表项DllSurrogate添加到键HKCRWow6432NodeAppID {E2779C61-F87E-4038-98A0-1D9E71334706}中,但不带值。
  • 使用GUID {E2779C61-F87E-4038-98A0-1D9E71334706}在HKLMSoftwareClassesAppID中创建一个没有任何值的新密钥。


  • 资源:
  • 此处有关复制文件的信息还不够:
    https://github.com/PoojaGugu/SAP-GuiClient-Automation
  • https://erpinnews.com/how-to-make-sap-rot-wrapper-library-available-in-a-64-bit-environment
  • 10-07 18:33