【问题标题】:Jacob: com.jacob.com.ComFailException: Can't co-create objectJacob:com.jacob.com.ComFailException:无法共同创建对象
【发布时间】:2014-05-30 09:24:10
【问题描述】:

我在运行下面的代码时遇到异常Exception in thread "main" com.jacob.com.ComFailException: Can't co-create object

我在网上查询了帮助。有些网站说我需要注册我的 dll。我尝试使用regsvr32.exe 进行注册。但我无法成功注册。弹出下方。

模块“jacob-1.18-M2-x64.dll”已加载,但未找到入口点 DllRegisterServer。请确保“jacob-1.18-M2-x64.dll”是有效的 DLL 或 OCX 文件,并且然后再试一次。

【问题讨论】:

  • 字符串路径 = System.getProperty("java.library.path"); System.out.println(路径); System.loadLibrary("jacob-1.18-M2-x64"); // 连接到 iMacros 脚本接口 System.out.println("Started."); ActiveXComponent iim = new ActiveXComponent("imacros");
  • 您能否发布您正在运行的代码的相关sn-p?

标签: java imacros jacob


【解决方案1】:

1.) 你不需要注册 jacob-dll,它只需要在你的 java.library.path 的某个地方。它是包含必须注册的 COM 对象的 dll。

2.) 如果 COM-dll 已注册,您必须小心使用正确的 JVM 和库。 32 位 dll 仅适用于 32 位 JVM,64 位 dll 仅适用于 64 位 jvm。使用错误的 JVM 将导致 Can't co-create object 错误。

【讨论】:

  • 嗨皮特!我使用的是 64 位,因为我使用的是 Windows 7。我使用的是下面的代码,并且此代码没有给出错误。请看下面的代码。字符串路径 = System.getProperty("java.library.path"); System.out.println(路径); System.loadLibrary("jacob-1.18-M2-x64");有问题的代码是 ActiveXComponent iim = new ActiveXComponent("imacros");请帮忙!
  • 您的浏览器版本是多少? 32 位还是 64 位?大多数 windows7 安装默认运行 32 位 InternetExplorer,所以我猜你安装的任何 iMacros 插件也将是 32 位的,因此需要 32 位 java 和 jacob。
【解决方案2】:

我遇到了同样的问题,我就是这样解决的:

  1. 使用 OLE/COM 对象查看器查找您的 COM 对象
  2. 确保使用 regsvr32.exe 注册您的 dll(来自 C:\Windows\System32)
  3. 您需要创建代理才能从 64 位应用程序访问 32 位 dll。在这里看到这个:http://www.gfi.com/blog/32bit-object-64bit-environment/

【讨论】:

    【解决方案3】:

    我遇到了同样的问题并像下面这样解决了。 1.设置jacob.jar的lib路径 2.将jacob-x86.dll(或64bit case jacob-x64.dll)复制到System32目录下。

    import com.jacob.activeX.ActiveXComponent;
    
    ActiveXComponent activeXComponent = new ActiveXComponent("ACTIVEX.ActiveXCtrl.1");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      相关资源
      最近更新 更多