我已经下载了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
任何人都能帮助我吗?
答案 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 。问题解决了。