2016-09-23 8 views
0

У меня есть веб-приложение Java, которое должно перекодировать слайды PowerPoint на изображения.Как заставить приложение Java вызывать PowerPoint через JACOB при запуске в качестве службы?

Для этого приложение подключается через JACOB к PowerPoint.

Чтобы приложение работало правильно, я использую его как услугу (используя nssm). При этом, кажется, я не в состоянии перекодировать слайды изображений из-за следующего за исключением

[1;31m[ERROR] wisdom-error[0;39m [36m{vert.x-eventloop-thread-0}[0;39m - An exception occurred while processing request POST /skillCenter/{portal}/config/add 
com.jacob.com.ComFailException: Invoke of: Open 
Source: Microsoft Office PowerPoint 2007 
Description: PowerPoint could not open the file. 

    at com.jacob.com.Dispatch.invokev(Native Method) ~[jacob-1.18.jar:na] 
    at com.jacob.com.Dispatch.invokev(Dispatch.java:625) ~[jacob-1.18.jar:na] 
    at com.jacob.com.Dispatch.callN(Dispatch.java:453) ~[jacob-1.18.jar:na] 
    at com.jacob.com.Dispatch.call(Dispatch.java:541) ~[jacob-1.18.jar:na] 
    at myCompany.myProject.helpers.loaders.powerpoint.MSPowerPoint.getPresentation(MSPowerPoint.java:58) ~[na:na] 
    at myCompany.myProject.helpers.loaders.powerpoint.MSPowerPoint.transform(MSPowerPoint.java:139) ~[na:na] 

Файл РРТ, очевидно, написан в папке, чем могут быть записаны пользователем, который проходит службу (мне , в тестовом примере).

При проверке процессов с Process Hacker я являюсь владельцем цепочки процессов, запускающим мое приложение, а также PowerPoint, которое запускается через svchost.exe.

Итак, что случилось в моем случае? Почему PowerPoint не может получить доступ к файлу при запуске в качестве службы, когда он отлично может открыть этот файл при запуске в качестве классического процесса?

EDIT 1 Я пробовал использовать как системную учетную запись, так и свою учетную запись, и оба счета выявили тот же недостаток.

+0

Какую учетную запись вы используете для запуска вашей службы? – Robert

+0

@Robert Я ответил на ваш комментарий, обновив свой вопрос. – Riduidel

ответ

0

Как представляется, программы Office при запуске в качестве службы требуют, чтобы у локального пользователя системы была папка для рабочего стола, иначе они просто обманывают такие странные ошибки.

Как следствие, решением такой проблемы является создание папки C:\Windows\SysWOW64\config\systemprofile\Desktop (в Windows 64).

 Смежные вопросы

  • Нет связанных вопросов^_^