Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java prunsrv.exe服务未启动_Java_Apache Commons_Procrun - Fatal编程技术网

Java 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

我正在尝试为应用程序安装并启动带有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%
上述配置打包为批处理文件,然后执行批处理文件以安装服务

日志文件也没有生成,因此我甚至无法调试。


请告诉我哪里出了问题

仅将此与我的设置脚本进行比较,我立即看到的唯一一件事是,您可能应该将内存设置设置为

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.dll的引用
  • 在VM上,我使用JDK安装而不是简单的JRE,JAVA_主页指向JDK bin文件夹。我必须将--Jvm参数从“auto”更改为JRE子文件夹中的实际Jvm.dll文件

  • prunsrv.exe的amd64版本

  • 尽管我更改了--Jvm设置,但服务在启动时仍然显示错误。我还必须使用amd64版本的prunsrv.exe来解决此问题。

    我已经尝试了您提到的更改,但问题仍然存在。此外,由于指定的堆栈大小以kb为单位,我使用k作为后缀,在这种情况下使用了4000k启动“测试”服务失败的原因是传递给系统调用的数据区域太小。错误,有什么想法吗?我的脚本和你的一样,也用你在下面提到的服务名称更新了exe名称这是我的问题。安装32位java以匹配32位prunsvr,一切正常如果我在我的机器上看不到这个文件夹怎么办?这是否意味着守护进程没有正确设置?也不要忘记JAVA_主页。这看起来确实非常重要。我也遇到了同样的问题,调试日志显示“用户名或密码不正确”。这当然不是真的。重命名exe以与服务名称相对应,解决了我的问题。