启动java应用程序作为Windows服务时出错

时间:2014-11-10 07:10:46

标签: java windows-services

我已经下载了commom-daemon工具并与java应用程序一起使用。我创建了一个bat文件,如下所示

set SERVICE_NAME=sample
set PR_INSTALL=D:\commons-daemon-1.0.15-bin-windows-signed\prunsrv.exe

REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=D:\logs
set PR_STDOUTPUT=D:\logs\stdout.txt
set PR_STDERROR=D:\logs\stderr.txt
set PR_LOGLEVEL=Error

REM Path to java installation
set PR_JVM=C:\Java\jre7\bin\client\jvm.dll
set PR_CLASSPATH=D:\commons-daemon-1.0.15-bin-windows-signed\Daemon.jar

REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=jvm
set PR_STARTCLASS=com.SomeService
set PR_STARTMETHOD=start

REM Shutdown configuration
set PR_STOPMODE=jvm
set PR_STOPCLASS=com.SomeService
set PR_STOPMETHOD=stop

REM JVM configuration
set PR_JVMMS=256
set PR_JVMMX=1024
set PR_JVMSS=4000
set PR_JVMOPTIONS=-Duser.language=DE;-Duser.region=de

在cmd中,我使用命令

安装服务
prunsrv.exe //IS//sample

在此之后,名为sample的服务在服务列表中可用,当我尝试启动它时显示:

  

Windows无法在本地计算机上启动示例。有关更多信息,请查看系统事件日志。如果这是非Microsoft服务,请与服务供应商联系并参阅特定于服务器的

     

错误代码1

已更新 我跑的时候

prunsrv.exe //ES//sample

显示

The data area passed to a system call is too small.
Failed to start service

任何人都能帮助我吗?

4 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。在我的情况下(不完全是你的),问题是jvm.dll路径,因为变量%JAVA_HOME%有空格。所以为了解决这个问题,我修改了作业

set CG_PATH_TO_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll

set CG_PATH_TO_JVM="%JAVA_HOME%\jre\bin\server\jvm.dll"

那就是全部。

此外,您可以使用此命令检查变量赋值:

prunmgr//ES//yourservicename_as_in_windows

答案 1 :(得分:2)

帮助他人排查故障。

如果你看一下: https://commons.apache.org/proper/commons-daemon/procrun.html

有一个参数:

--LogPath

默认为:

%SystemRoot%\System32\LogFiles\Apache

生成一个日志文件,其中包含一些其他错误消息和可能有用的信息。 原始提问者将日志路径更改为:

set PR_LOGPATH=D:\logs

所以看看在他们的案例中应该做适当的事情。

答案 2 :(得分:0)

我也有这个神秘的错误消息'传递给系统调用的数据区域太小了。'在Win 8 / Server 2008上的启动日志或Windows / System32 / LogFiles / Apache / logs中没有更多信息。

我重命名了我的包,而且--StartClass和--StopClass参数错误。

答案 3 :(得分:0)

我同意OscarSan,%JAVA_HOME%中的空格可能会导致“错误代码1”问题。我通过重新安装JDK 1.8来解决此问题,将安装路径从 C:\ Program Files Java \ jdk1.8.0_144 更改为 C:\ Java \ jdk1.8.0_144 。问题解决了。