Java prunsrv.exe服务未启动
我正在尝试为应用程序安装并启动带有prunsrv.exe的服务 我可以安装服务,但服务不会启动,并给我一个错误 下面是用于使用prunsrv.exe安装服务的配置Java prunsrv.exe服务未启动,java,apache-commons,procrun,Java,Apache Commons,Procrun,我正在尝试为应用程序安装并启动带有prunsrv.exe的服务 我可以安装服务,但服务不会启动,并给我一个错误 下面是用于使用prunsrv.exe安装服务的配置 set SERVICE_NAME=TestService REM Service log configuration set PR_LOGPREFIX=%SERVICE_NAME% set PR_LOGPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\l
set SERVICE_NAME=TestService
REM Service log configuration
set PR_LOGPREFIX=%SERVICE_NAME%
set PR_LOGPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\logs
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_LOGLEVEL=INFO
REM Path to java installation
set PR_JVM=C:\Program Files\Java\jre1.6.0_04\bin\client\jvm.dll
set PR_CLASSPATH=D:\setups\Commons_Daemon\commons-daemon-1.0.14-bin-windows\temp.jar;
REM Startup configuration
set PR_STARTUP=auto
set PR_STARTMODE=java
set PR_STARTCLASS=Trys.AppLauncher
set PR_STARTMETHOD=start
REM Shutdown configuration
set PR_STOPMODE=java
set PR_STOPCLASS=Trys.AppLauncher
set PR_STOPMETHOD=stop
REM JVM configuration
set PR_JVMMS=64
set PR_JVMMX=128
set PR_JVMSS=4000
REM Install service
prunsrv.exe //IS//%SERVICE_NAME%
上述配置打包为批处理文件,然后执行批处理文件以安装服务
日志文件也没有生成,因此我甚至无法调试。
请告诉我哪里出了问题仅将此与我的设置脚本进行比较,我立即看到的唯一一件事是,您可能应该将内存设置设置为
REM JVM configuration
set PR_JVMMS=64m
set PR_JVMMX=128m
set PR_JVMSS=128m
顺便说一下,JRE 1.6.0_04有些过时了
嗯
Gyro如果从服务管理器而不是命令行启动服务,则需要在注册表中设置类路径、JAVA_选项等。发件人: 基本服务定义在注册表项下维护:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services\
其他参数存储在注册表中的以下位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\ProcRun 2.0\<ServiceName>\Parameters
HKEY\u LOCAL\u MACHINE\SOFTWARE\Apache软件基金会\ProcRun 2.0\\Parameters
在64位Windows上,ProRun始终使用32位注册表视图存储配置。这意味着参数将存储在:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\ProcRun 2.0\<ServiceName>
HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\Apache软件基金会\ProcRun 2.0\
此错误的原因是我没有将prunsrv.exe
重命名为TestService.exe
。类似地,Prunmgr.exe必须是TestServicew.exe
重命名这些文件非常重要。我也有同样的错误,但我所要做的就是以管理员身份运行脚本(在windows server 2012上)。。。显然,windows 2012上的权限系统已更改:例如,在windows server 2008上,此错误未发生(相同的脚本)。一个可能的问题是使用了错误的
prunsvr.exe
。对于64位java安装,使用amd64/prunsvr.exe;对于32位java安装,使用commons-deamon-xxx-bin-windows.zip文件中的/prunsvr.exe
。这可能是很多事情。首先检查日志。默认值为
%SystemRoot%\System32\LogFiles\Apache
从那里你应该可以得到一个更具体的错误。例如,类路径、Java路径或某些其他选项无效。以防有人发现它有帮助。 我也有同样的问题“传递给系统调用的数据区域太小”。这是因为程序在StartMode=jvm中找不到jvm.dll 解决方案:一切取决于您的StartMode。 1) 如果“-StartMode”是jvm,则必须指定“-jvm”参数作为jvm.dll的路径
2) 如果“-StartMode”是java或exe,则“-jvm”参数设置为auto(您的程序将作为名为java.exe的单独进程启动)我的笔记本电脑也有同样的问题,但它在其他配置相同的笔记本电脑上工作 我已经检查了
%SystemRoot%\System32\LogFiles\Apache\commons daemon.log
。我发现以下错误缺少图像文件
然后我发现我们需要在所有参数上加上双引号。
以你为例,如果你尝试
pushd%CD%
试试下面这个
“prunsrv.exe”//IS//%SERVICE\u NAME%
--Startup=“%PR\u Startup%”
--Jvm=“%PR\u Jvm%”
--Classpath=“%PR\u Classpath%”
--StartMode=“jvm”
--StopMode=“jvm”
--StartClass=“%PR\u StartClass%”
--StartMethod=“%PR\u StartMethod%”
--StopClass=“%PR\u StopClass%”
--StopMethod=“%PR\u StopMethod%”
示例
我能够在本地计算机上运行该服务,但在运行Windows 2012R2的虚拟机上遇到了相同的错误 这个问题是由两个原因引起的:
尽管我更改了--Jvm设置,但服务在启动时仍然显示错误。我还必须使用amd64版本的prunsrv.exe来解决此问题。我已经尝试了您提到的更改,但问题仍然存在。此外,由于指定的堆栈大小以kb为单位,我使用k作为后缀,在这种情况下使用了4000k启动“测试”服务失败的原因是传递给系统调用的数据区域太小。错误,有什么想法吗?我的脚本和你的一样,也用你在下面提到的服务名称更新了exe名称这是我的问题。安装32位java以匹配32位prunsvr,一切正常如果我在我的机器上看不到这个文件夹怎么办?这是否意味着守护进程没有正确设置?也不要忘记JAVA_主页。这看起来确实非常重要。我也遇到了同样的问题,调试日志显示“用户名或密码不正确”。这当然不是真的。重命名exe以与服务名称相对应,解决了我的问题。