2014-05-30 56 views
-1

我在運行下面的代碼時遇到異常Exception in thread "main" com.jacob.com.ComFailException: Can't co-create objectJacob:com.jacob.com.ComFailException:無法共同創建對象

我在網上查了一下求助。有些網站說我需要註冊我的dll。我嘗試使用regsvr32.exe註冊。但我無法成功註冊。下面彈出。

「雅各布-1.18-M2-x64.dll」 已加載,但在入口點中的DllRegisterServer沒有found.Make確保 「雅各布-1.18-M2-x64.dll」 是一個有效的DLL模塊或OCX文件,然後再試一次。

+0

String path = System.getProperty(「java.library.path」); \t System.out.println(path); \t System.loadLibrary(「jacob-1.18-M2-x64」); \t \t //連接到iMacros腳本界面 System.out.println(「Started。」); ActiveXComponent iim = new ActiveXComponent(「imacros」); – Shonali

+0

您可以發佈您正在運行的代碼的相關代碼段嗎? –

回答

2

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錯誤。

+0

嗨Piet!我使用64位,因爲我正在使用Windows 7.我使用下面的代碼,並且此代碼不會給出錯誤。請參閱下面的代碼。 String path = System.getProperty(「java.library.path」);的System.out.println(路徑);的System.loadLibrary( 「雅各布-1.18-M2-64」); 有問題的代碼是 ActiveXComponent iim = new ActiveXComponent(「imacros」); 請幫助! – Shonali

+0

什麼是您的瀏覽器版本? 32或64位?大多數windows7安裝默認運行32bit-InternetExplorer,所以我猜想你安裝的任何iMacros插件也會有32位,因此需要32位java和jacob。 –

1

我有同樣的問題,這是我固定它:

  1. 查找使用OLE/COM對象查看器
  2. 你的COM對象請務必從C註冊的regsvr32.exe您的DLL(: \ Windows \ System32)
  3. 您需要製作一個代理才能從64位應用程序訪問32位dll。請參閱此處:http://www.gfi.com/blog/32bit-object-64bit-environment/