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

标签 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 could not start the sample on Local Computer. For more information review the System event log. If this is a non-Microsoft service, contact the service vendor and refer to the server specific

error code 1

已更新 当我运行时

prunsrv.exe //ES//sample

显示

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

谁能帮我解决这个问题?

最佳答案

我遇到了同样的问题。在我的例子中(不完全是你的),问题是 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

关于java - 将 Java 应用程序作为 Windows 服务启动时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838517/

相关文章:

java - NoSuchElementException 未通过 Ideone 测试

java - Eclipse - org.junit 无法解析,即使它在 Maven 依赖项中

c# - 作为控制台应用程序运行 Windows 服务

.net - 我如何订阅 MSMQ 队列但只有 "peek".Net 中的消息?

java - 对可变对象使用 volatile 关键字

java - Hadoop GroupingComparatorClass.compare 方法未被调用

c# - 在 Windows 和 Mono 中存储 C# 服务设置

winapi - 如何用 Haskell 编写 Windows 服务应用程序?

windows-services - 由于 OnStart() 方法中的无限循环,Windows 服务始终为 "Starting"

java - Java WebApp 中的 CAC 身份验证