Джейкоб: com.jacob.com.ComFailException: невозможно совместно создать объект

Я столкнулся с исключением 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, а затем повторите попытку. .


person Shonali    schedule 30.05.2014    source источник
comment
Строковый путь = System.getProperty(java.library.path); Система.out.println(путь); System.loadLibrary(jacob-1.18-M2-x64); // Подключение к интерфейсу сценариев iMacros System.out.println(Started.); ActiveXComponent iim = новый ActiveXComponent(imacros);   -  person Shonali    schedule 30.05.2014
comment
Не могли бы вы опубликовать соответствующий фрагмент кода, который вы используете?   -  person Craig Otis    schedule 30.05.2014


Ответы (3)


1.) Вам не нужно регистрировать jacob-dll, она просто должна быть где-то в вашем java.library.path. Это dll, который содержит COM-объект, который должен быть зарегистрирован.

2.) Если COM-dll зарегистрирована, вы должны позаботиться об использовании правильной JVM с библиотекой. 32-разрядные библиотеки будут работать только с 32-разрядной JVM, 64-разрядные библиотеки — только с 64-разрядной JVM. Использование неправильной JVM приведет к ошибке Can't co-create object.

person piet.t    schedule 30.05.2014
comment
Привет Пит! Я использую 64-битную версию, потому что я использую Windows 7. Я использую приведенный ниже код, и этот код не дает ошибки. Пожалуйста, смотрите код ниже. Строковый путь = System.getProperty(java.library.path); Система.out.println(путь); System.loadLibrary(jacob-1.18-M2-x64); Проблемный код: ActiveXComponent iim = new ActiveXComponent(imacros); Пожалуйста помогите!! - person Shonali; 02.06.2014
comment
Какая у вас версия браузера? 32 или 64 бит? Большинство установок Windows7 по умолчанию запускают 32-битный InternetExplorer, поэтому я предполагаю, что любой подключаемый модуль iMacros, который вы устанавливаете, также будет 32-битным и, следовательно, потребует 32-битных java и jacob. - person piet.t; 02.06.2014

У меня была такая же проблема, и вот как я ее исправил:

  1. Найдите свой COM-объект с помощью средства просмотра объектов OLE/COM.
  2. Обязательно зарегистрируйте свою dll с помощью regsvr32.exe (из C:\Windows\System32)
  3. Вам нужно сделать суррогат, чтобы получить доступ к 32-битной dll из 64-битного приложения. См. здесь: http://www.gfi.com/blog/32bit-object-64bit-environment/
person Adrian Muntean    schedule 12.10.2016

Я столкнулся с той же проблемой и решил ее следующим образом. 1. Установите путь к библиотеке jacob.jar 2. Скопируйте jacob-x86.dll (или 64-битный случай jacob-x64.dll) в каталог System32.

import com.jacob.activeX.ActiveXComponent;

ActiveXComponent activeXComponent = new ActiveXComponent("ACTIVEX.ActiveXCtrl.1");
person cosmosjefry    schedule 03.12.2019