Я попытался создать объект 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 или что-то в этом роде.
@Freeman Я ничего не знаю об установке JCO, я только что добавил в свой проект jar-файл для jcob. Как мне установить JCO?
@Freeman Я имею в виду jcob, а не jco, в чем разница между ними и для чего нужен JCO?
JACOB - это мост JAVA-COM, который позволяет вызывать компоненты автоматизации COM из Java. Он использует JNI для выполнения собственных вызовов к библиотекам COM. <br /> SAP JCo - это коммуникационная библиотека, основанная на RFC, который представляет собой протокол интерфейса SAP, который упрощает программирование коммуникационных процессов между системами.
@Freeman SAP не бесплатен




Вместо создания нового 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");
Да-да !! Ты спас мне день. Спасибо за ваш ответ.
Может быть, это поможет: stackoverflow.com/questions/16147193/… Думаю, вам стоит зарегистрировать DLL.