prunsrv.exe服务无法启动(prunsrv.exe Service not starting

2019-08-17 20:29发布

我试图用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\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%

上述配置被打包到一个批处理文件执行安装服务

另外,日志文件不会产生,由于这是我甚至不能调试。

请告诉我在哪里,我错了

Answer 1:

一个可能的问题是用错了prunsvr.exe 。 对于64位Java安装,使用amd64/prunsvr.exe ,对于32位Java安装,使用/prunsvr.exe在commons-deamon-xxx-bin-windows.zip文件。



Answer 2:

这可能是很多东西。 首先检查日志。 默认值是在...

%SYSTEMROOT%\ SYSTEM32 \ LogFiles文件\阿帕奇

从那里,你应该能够得到一个更具体的错误。 如类路径,Java的路径,或其他一些选项是无效的。



Answer 3:

这样做的原因错误是,我没有重命名prunsrv.exeTestService.exe 。 同样Prunmgr.exe必须是TestServicew.exe。

非常重要的是,这些文件被重命名。



Answer 4:

如果你开始从服务管理的服务,而不是在命令行中,你需要设置CLASSPATH,JAVA_OPTS等在注册表中。 从这里 :

基本服务的定义注册表项下保持:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>

其他参数都存储在注册表中:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\ProcRun 2.0\<ServiceName>\Parameters

在64位的Windows procrun总是使用32位注册表视图,用于存储配置信息。 这意味着参数将被存放在里面:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\ProcRun 2.0\<ServiceName>


Answer 5:

我能在我的本地机器上运行的服务,但我得到了在虚拟机上运行的Windows 2012R2同样的错误。

这个问题是两个原因造成:

  1. 参考JVM.DLL

在VM我使用的JDK安装,而不是一个简单的JRE和JAVA_HOME指向JDK bin文件夹。 我不得不从“自动”的--Jvm参数更改为位于JRE的子文件夹中的实际的jvm.dll文件。

  1. prunsrv.exe的AMD64版本

Allthough我改变了--Jvm设置,该服务仍然启动过程中显示错误。 我也不得不使用prunsrv.exe的AMD64版本,以解决这个问题。



Answer 6:

万一有人发现它有用。 我有同样的问题“传递给系统调用的数据区域是太小”。 这是因为程序不能在STARTMODE = JVM找到的jvm.dll。

解决方案:一切都取决于你STARTMODE。 1)如果“--StartMode”是JVM你必须指定“--jvm”参数为路径JVM.DLL 2)如果“--StartMode”是java或exe文件集“--jvm”参数设置为自动(你的计划将推出作为单独procces命名的java.exe)



Answer 7:

我有同样的问题在我的笔记本电脑,但它正在其上具有相同configution别人的笔记本电脑。

我已经检查%SystemRoot%\System32\LogFiles\Apache\commons-daemon.log 。 我发现下面的错误丢失图像文件

后来我发现,我们需要把双引号在所有参数。 在你的榜样,如果你尝试

pushd %CD%

下面试试这个。

"prunsrv.exe" //IS//%SERVICE_NAME% --Startup="%PR_STARTUP%" --Jvm="%PR_JVM%" --Classpath="%PR_CLASSPATH%" --StartMode="jvm" --StopMode="jvm" --StartClass="%PR_STARTCLASS%" --StartMethod="%PR_STARTMETHOD%" --StopClass="%PR_STOPCLASS%" --StopMethod="%PR_STOPMETHOD%"

样本实施例http://www.eclipse.org/jetty/documentation/current/startup-windows-service.html



Answer 8:

只是相比,该与我的安装脚本,只有眼前的事情我看到的是,你或许应该让你的内存设置的样子

REM JVM configuration
set PR_JVMMS=64m 
set PR_JVMMX=128m
set PR_JVMSS=128m

顺便说一句,JRE 1.6.0_04是有点过时犯错...

HTH陀螺



Answer 9:

我有同样的错误,但我不得不这样做的是运行脚本以管理员身份......显然,在2012年窗口许可制度(在Windows Server 2012上)发生了变化:恩。 Windows Server 2008上并没有出现这个错误(相同的脚本)。



文章来源: prunsrv.exe Service not starting up