При вызове функции работы с com-объектом OpenOffice из программы работающий в составе задачи CI Hudson (вероятно это будет и при работе Jenkins) происходит ошибка.
Пример:
Private OOO_serviceManager As New Object
...
OOO_serviceManager = CreateObject("com.sun.star.ServiceManager")
Происходит ошибка создания объекта com.sun.star.ServiceManager.
Если программу запускать вне CI Hudson, все работает отлично.
Возможно проблемы связаны с ограничениями или правами процесса запускающего программу из CI Hudson.
Решения пока не нашел, поэтому реализовал все через работу с Hunspell.
Примечание: это оказалось лучшим решением, так как позволило расширить функционал программы который OpenOffice предоставить не мог — работу с произвольными языками,
работу одновременно с двумя словарями одного языка и пр.
В программе используется NHunspell.dll, Hunspellx86.dll и Hunspellx64.dll.
Файлы можно скачать с сайта Hunspell или из пакета SpellCheckPack, который используется в программе.
Примечание: подробней про пакет SpellCheckPack
Все файлы dll лежат в том же каталоге что и основной файл программы!
Пример:
Dim tempasm As System.Reflection.Assembly
tempasm = Reflection.Assembly.LoadFile(AppDir & "/NHunspell.dll")
...
Dim temptypeHunspell As New Object
temptypeHunspell = tempasm.GetType("NHunspell.Hunspell")
...
Dim temptypeSpellEngine As New Object
temptypeSpellEngine = tempasm.GetType("NHunspell.SpellEngine")
Указанный пример корректно работает!
Текущее решение проблемы работы орфографического модуля OpenOffice в среде CI Hudson является замена его на Hunspell.
В программе «Локализатор исходного кода» используется два модуля проверки орфографии, в качестве основного модуля — «Hunspell», и вспомогательного — «OpenOffice(LibreOffice)».
Пример:
Private OOO_serviceManager As New Object
...
OOO_serviceManager = CreateObject("com.sun.star.ServiceManager")
Происходит ошибка создания объекта com.sun.star.ServiceManager.
Если программу запускать вне CI Hudson, все работает отлично.
Возможно проблемы связаны с ограничениями или правами процесса запускающего программу из CI Hudson.
Решения пока не нашел, поэтому реализовал все через работу с Hunspell.
Примечание: это оказалось лучшим решением, так как позволило расширить функционал программы который OpenOffice предоставить не мог — работу с произвольными языками,
работу одновременно с двумя словарями одного языка и пр.
В программе используется NHunspell.dll, Hunspellx86.dll и Hunspellx64.dll.
Файлы можно скачать с сайта Hunspell или из пакета SpellCheckPack, который используется в программе.
Примечание: подробней про пакет SpellCheckPack
Все файлы dll лежат в том же каталоге что и основной файл программы!
Пример:
Dim tempasm As System.Reflection.Assembly
tempasm = Reflection.Assembly.LoadFile(AppDir & "/NHunspell.dll")
...
Dim temptypeHunspell As New Object
temptypeHunspell = tempasm.GetType("NHunspell.Hunspell")
...
Dim temptypeSpellEngine As New Object
temptypeSpellEngine = tempasm.GetType("NHunspell.SpellEngine")
Указанный пример корректно работает!
Текущее решение проблемы работы орфографического модуля OpenOffice в среде CI Hudson является замена его на Hunspell.
В программе «Локализатор исходного кода» используется два модуля проверки орфографии, в качестве основного модуля — «Hunspell», и вспомогательного — «OpenOffice(LibreOffice)».
Комментариев нет:
Отправить комментарий