Как использовать файл OCX в Jcob

Я попытался создать объект ActiveXComponent с помощью clsid, как показано ниже:

public static void main(String[] args) {
    System.setProperty(LibraryLoader.JACOB_DLL_PATH, "C:\\Users\\TelC\\Downloads\\jacob-1.19\\jacob-1.19-x64.dll");
    LibraryLoader.loadJacobLibrary();
    ActiveXComponent comp=new ActiveXComponent("clsid:5B769435-52C8-11D2-B347-444553540000");
    System.out.println("The Library been loaded, and an activeX component been created");
}

но я получаю следующее исключение:

com.jacob.com.ComFailException: Can't find moniker

Я был бы счастлив, если бы мне кто-нибудь объяснил, что я делаю не так.

Я ничего не делал из своей программы, например, регистрировал какие-либо dll или что-то в этом роде.

Может быть, это поможет: stackoverflow.com/questions/16147193/… Думаю, вам стоит зарегистрировать DLL.

Arnold Schrijver 21.07.2018 10:08

@Freeman Я ничего не знаю об установке JCO, я только что добавил в свой проект jar-файл для jcob. Как мне установить JCO?

A.Shaheri 21.07.2018 10:13

@Freeman Я имею в виду jcob, а не jco, в чем разница между ними и для чего нужен JCO?

A.Shaheri 21.07.2018 10:22

JACOB - это мост JAVA-COM, который позволяет вызывать компоненты автоматизации COM из Java. Он использует JNI для выполнения собственных вызовов к библиотекам COM. <br /> SAP JCo - это коммуникационная библиотека, основанная на RFC, который представляет собой протокол интерфейса SAP, который упрощает программирование коммуникационных процессов между системами.

Freeman 21.07.2018 10:26

@Freeman SAP не бесплатен

Mohse Taheri 21.07.2018 15:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
454
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо создания нового ActiveXComponent вы должны создать его методом createNewInstance:

    System.setProperty(LibraryLoader.JACOB_DLL_PATH, "C:\\Users\\TelC\\Downloads\\jacob-1.19\\jacob-1.19-x64.dll");
    LibraryLoader.loadJacobLibrary();
    ActiveXComponent comp=ActiveXComponent.createNewInstance("clsid:5B769435-52C8-11D2-B347-444553540000");
    System.out.println("The Library been loaded, and an activeX component been created");

Да-да !! Ты спас мне день. Спасибо за ваш ответ.

A.Shaheri 21.07.2018 15:29

Другие вопросы по теме