Хорошо, я должен был бежать от имени администратора. Теперь он сохранен и работает с 64-битной Java. Большое спасибо. Ваша помощь очень ценится.
я есть следующая конфигурация:
1) Windows 10 64-битная
2) Приложение, которое имеет только 32-битную версию и доступно через COM.
Я получаю доступ к файлу .dll 32-битного приложения, используя tlbimb.jar для создания необходимых интерфейсов, и у меня все получается.
Сценарий 1. Я пытаюсь получить доступ к 32-разрядному приложению с помощью Java 832-битный монтаж. Я могу вызвать методы через COMуспешно без каких-либо проблем.
Сценарий 2. Я пытаюсь получить доступ к 32-разрядному приложению с помощью 64-разрядной установки Java 8. Я получаю сообщение об ошибке:
Exception in thread "main" com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
Я искал исключение в Stackoverflow / Google, и я сделал следующее:
1) Зарегистрировал dll приложения, используя как Sys64WOW / regsvr32.exe, так и System32 / regsvr32.exe.
2) Зарегистрировал com4j dll (32- и 64-разрядную), используя как Sys64WOW / regsvr32.exe, так и System32 / regsvr32.exe.
3) Скопировал dll в папки Sys64WOW и System32.
Я сделал все вышеперечисленное отдельно, проверив все возможные комбинации. Указанная ошибка при использовании 64-битной Java все еще существует.
Я пытался использовать другой мост (Джейкоб). На 32-битной Java это удается, на 64-битной Java это не удается.
У меня есть вопрос к кому-то, кто может знать: есть ли способ подключить приложение, которое, насколько я могу судить, предлагает толькоWin32 COM dll[1], используя любой из доступных мостов Java / COM иJava 64bit? Или просто 32-битная COM + 64-битная Java не подключаема?
[1]: Я проверил OLE / COM Viewer и в библиотеке типов есть только одна запись "0 Win32 =", поэтому я подразумевал, что это означает, что Win64 COM dll отсутствует, верно?