JIException: Class not registered. [0x80040154]

classic Classic list List threaded Threaded
5 messages Options
Александр Александр
Reply | Threaded
Open this post in threaded view
|

JIException: Class not registered. [0x80040154]

Windows Vista Enterprise sp2 (x64)
Платформа 1С Предприятие 8.1 (8.1.15.14)

Пробую запуск и присоединение с БД 1С (по тексту https://bitbucket.org/IgorKonovalov/octitbit/wiki/sample1)

Пункт (А6) FAQ'a по настройке j-Interop читал..., но он не применим к COM-серверам на основе *.exe, а только DLL или OCX.

В службе компонентов "1CV81 Application" зарегистрировано, права у вызывающего пользователя - админские...

Что не так ?
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: JIException: Class not registered. [0x80040154]

This post was updated on .
Да, есть такой момент. Упустил...

ApplicationDriver driver = ApplicationDriver.loadDriver(.....)
driver.setAutoRegistration(true); // только для самого первого подключения к этой машинке

setAutoRegistration отвечает за флаги DLLSurrogate. Фактически это сценарий "Easiest Way" из того же A6. В принципе Hard Way тоже работает. Но лучше начать проверять с простого.
OCTitbit developer.
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: JIException: Class not registered. [0x80040154]

In reply to this post by Александр
Кстати еще один момент - работа производится не с Application, а с V8x.COMConnector.
OCTitbit developer.
Александр Александр
Reply | Threaded
Open this post in threaded view
|

Re: JIException: Class not registered. [0x80040154]

Спасибо, Игорь ! Проблема с этим исключением решилась "Hard Way" способом.

"Easiest Way" не сработал, т.е. сработал, но не верно... Дело в том, что на 64-х разрядной Винде есть две разновидности веток реестра: HKCR\CLSID, HKCR\AppID и HKCR\WOW6432Node\CLSID, HKCR\WOW6432Node\AppID. В ветках HKCR\WOW6432Node было почти правильно (за исключением того, что ключ DllSurrogate=" ", а не пустой строке), а вот в ветке HKCR\CLSID ключи не были заполнены. Так что ручками поправил. Теперь исключение 0x80040154 не появляется. Но... %(

Появилась новое исключение:
org.jinterop.dcom.common.JIException: The RPC server is unavailable. Please check if the COM server is up and running and that route to the COM Server is accessible (A simple "Ping" to the Server machine would do). Also please confirm if the Windows Firewall is not blocking DCOM access. [0x800706BA]

И что примечательно: на "голой" j-Interop DCOM c "V81.Application" работает, а с "V81.COMConnector"  НЕТ ! Причём в службе компонентов зарегистрировано COM+ приложение "V81.COMConnector" (с компонентом C:\Program Files (x86)\1cv81\bin\comcntr.dll) и оно работает (по мнению Винды) !
 
Надо копать в сторону безопасности Винды... Может кто подскажет ?
IgorKonovalov IgorKonovalov
Reply | Threaded
Open this post in threaded view
|

Re: JIException: Class not registered. [0x80040154]

Надо посоветовать команде j-interop это в FAQ добавить. "Easiest way" на практике у меня получался только на Win2003 server 32 в стоковой конфигурации. "Hard way" сбоев пока не давал ))

По поводу 800706BA. Мне пока такая не встречалась признаться... Нашел на 1с-pro ветку на эту тему
http://www.1c-pro.ru/index.php?showtopic=10600&hl=800706BA. Там как раз с 64-битной платформой заморочки были. Может поможет. Мне просто даже проверить не на чем, нет Vista 64 (( Буду гуглить...
OCTitbit developer.