我有一个Java Web应用程序,必须将PowerPoint幻灯片转码为图像。
为此,此应用程序通过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]
ppt文件显然写在一个文件夹中,而不是由运行该服务的用户写的文件夹(我,在测试用例中)。
使用Process Hacker检查流程时,我显示为启动我的应用程序的流程链的所有者,以及通过svchost.exe启动的PowerPoint。
那么,我的情况有什么问题?为什么powerPoint在作为服务运行时无法访问该文件,当它作为经典流程运行时能完全打开该文件?
编辑1 我尝试使用系统帐户和我的帐户,两个帐户都显示了相同的漏洞。
答案 0 :(得分:0)
如图所示,Office程序作为服务运行时,需要系统本地用户拥有一个桌面文件夹,否则他们只会发现这些奇怪的错误。
因此,解决此类问题的方法是创建C:\Windows\SysWOW64\config\systemprofile\Desktop
(在Windows 64上)文件夹。