如何使用procrun将documents4j服务器独立安排为windows服务?

我一直在尝试使用procrun将documents4j安排为Windows服务进行RTF到PDF转换,但它不断抛出以下错误:

com.documents4j.throwables.ConversionInputException: The sent input is invalid at com.documents4j.util.Reaction$ConversionInputExceptionBuilder.make(Reaction.java:159) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at com.documents4j.util.Reaction$ExceptionalReaction.apply(Reaction.java:75) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at com.documents4j.ws.ConverterNetworkProtocol$Status.resolve(ConverterNetworkProtocol.java:97) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at com.documents4j.job.WebserviceRequestFutureWrapper.handle(WebserviceRequestFutureWrapper.java:48) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at com.documents4j.job.WebserviceRequestFutureWrapper.get(WebserviceRequestFutureWrapper.java:38) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at com.documents4j.job.WebserviceRequestFutureWrapper.get(WebserviceRequestFutureWrapper.java:13) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at com.documents4j.job.AbstractFutureWrappingPriorityFuture.run(AbstractFutureWrappingPriorityFuture.java:78) ~[documents4j-client-standalone-0.3-SNAPSHOT-shaded.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_31] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_31] at java.lang.Thread.run(Unknown Source) [na:1.8.0_31] 

我为procrun创建了以下bat文件

 @echo off set SELF=%CD% set SERVICE_NAME=PCNService set SERVICE_URL= set PR_INSTALL=%SELF%\prunsrv.exe set PRMGR_INSTALL=%SELF%\prunmgr.exe @REM Service Log Configuration set PR_LOGPREFIX=%SERVICE_NAME% set PR_LOGPATH=%SELF%\logs set PR_STDOUTPUT=auto set PR_STDERROR=auto set PR_LOGLEVEL=Debug @REM Path to Java Installation set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_05 set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll set PR_CLASSPATH=%SELF%\documents4j-server-standalone-0.3-SNAPSHOT-shaded.jar @REM JVM Configuration set PR_JVMOPTIONS= @REM Startup Configuration set JETTY_START_CLASS=com.documents4j.standalone.StandaloneServer set PR_STARTUP=auto set PR_STARTMODE=java set PR_STARTCLASS=%JETTY_START_CLASS% set PR_STARTMETHOD=start set PR_STARTPARAMS=http://localhost:9998 @REM Shutdown Configuration set PR_STOPMODE=java set PR_STOPCLASS=%JETTY_START_CLASS% set PR_STOPMETHOD=stop set PR_STOPPARAMS= if "x%1x" == "xx" goto displayUsage set SERVICE_CMD=%1 shift if "x%1x" == "xx" goto checkServiceCmd :checkServiceCmd if /i %SERVICE_CMD% == install goto doInstall if /i %SERVICE_CMD% == delete goto doDelete if /i %SERVICE_CMD% == stop goto doStop if /i %SERVICE_CMD% == start goto doStart if /i %SERVICE_CMD% == monitor goto doMonitor if /i %SERVICE_CMD% == run goto doRun if /i %SERVICE_CMD% == console goto doConsole echo Unknown parameter "%SERVICE_CMD%" :displayUsage echo. echo Usage: service.bat install/start/stop/delete goto end :doInstall rem Install the service echo Installing the service '%SERVICE_NAME%' ... %PR_INSTALL% //IS//%SERVICE_NAME% ^ --DisplayName="%SERVICE_NAME%" ^ --Install="%PR_INSTALL%" ^ --Startup="%PR_STARTUP%" ^ --LogPath="%PR_LOGPATH%" ^ --LogPrefix="%PR_LOGPREFIX%" ^ --LogLevel="%PR_LOGLEVEL%" ^ --StdOutput="%PR_STDOUTPUT%" ^ --StdError="%PR_STDERROR%" ^ --JavaHome="%JAVA_HOME%" ^ --Jvm="%PR_JVM%" ^ --JvmMs="" ^ --JvmMx="" ^ --JvmSs="" ^ --JvmOptions="%PR_JVMOPTIONS%" ^ --Classpath="%PR_CLASSPATH%" ^ --StartMode="%PR_STARTMODE%" ^ --StartClass="%PR_STARTCLASS%" ^ --StartMethod="%PR_STARTMETHOD%" ^ --StartParams="%PR_STARTPARAMS%" ^ --StopMode="%PR_STOPMODE%" ^ --StopClass="%PR_STOPCLASS%" ^ --StopMethod="%PR_STOPMETHOD%" ^ --StopParams="%PR_STOPPARAMS%" ^ --Type interactive if not errorlevel 1 goto installed echo Failed to install "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% goto end :doStart rem Starting the service echo Starting the service '%SERVICE_NAME%' ... %PR_INSTALL% //ES//%SERVICE_NAME% if not errorlevel 1 goto started echo Failed to start "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% goto end :doStop rem Stop the service echo Stopping the service '%SERVICE_NAME%' ... %PR_INSTALL% //SS//%SERVICE_NAME% if not errorlevel 1 goto stopped echo Failed to stop "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% goto end :doDelete rem Delete the service echo Deleting the service '%SERVICE_NAME%' ... %PR_INSTALL% //DS//%SERVICE_NAME% if not errorlevel 1 goto deleted echo Failed to delete "%SERVICE_NAME%" service. Refer to log in %PR_LOGPATH% goto end :doMonitor rem Monitor the service echo Monitoring the service '%SERVICE_NAME%' ... echo Look for the service in the system tray. You can modify the properties in the GUI. %PRMGR_INSTALL% //MR//%SERVICE_NAME% goto end :doRun rem Run the service echo Running the service '%SERVICE_NAME%' ... %PR_INSTALL% //RS//%SERVICE_NAME% goto end :doEdit rem Edit the service echo Editing the service '%SERVICE_NAME%' ... %PRMGR_INSTALL% //ES//%SERVICE_NAME% goto end :doConsole rem Running the service as console application %PR_INSTALL% //TS//%SERVICE_NAME% goto end :installed echo The Service "%SERVICE_NAME%" has been installed goto logging goto end :started echo The Service "%SERVICE_NAME%" has been started goto logging goto end :deleted echo The Service "%SERVICE_NAME%" has been deleted goto end :stopped echo The Service "%SERVICE_NAME%" has been stopped goto logging goto end :logging echo Refer to log in %PR_LOGPATH% :end  

我能够成功安装jar作为Windows服务并启动/停止它

此外,当通过命令行执行类com.documents4j.standalone.StandaloneServer时,转换正确发生。

您是否阅读过使用Word作为Windows服务运行documents4j的信息?

与MS Office转换一起作为Windows服务运行时,documents4j可能会出现故障。 请注意,MS Office不正式支持在服务上下文中执行。 作为服务运行时,MS Office始终使用MS Window的本地服务帐户启动,该帐户不配置桌面。 但是,MS Office希望桌面存在才能正常运行。 如果没有这样的桌面配置,MS Office将正确启动但无法读取任何输入文件。 为了允许MS Office在服务上下文中运行,有两种可能的方法,更推荐第一种方法:

在32位系统上,创建文件夹C:\ Windows \ System32 \ config \ systemprofile \ Desktop。 在64位系统上,创建文件夹C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop。

更多信息可以在MSDN上找到。 您可以操作MS Window的注册表,以便MS Office应用程序使用除本地服务帐户之外的其他帐户运行。 MSDN上记录了这种方法。 请注意,这会破坏MS Window的沙箱模型,并对运行MS Office的计算机施加额外的安全威胁。