簡體   English   中英

prunsrv.exe 服務未啟動

[英]prunsrv.exe Service not starting up

我正在嘗試使用 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%

上面的config打包成批處理文件執行安裝服務

也沒有生成日志文件,因為我什至無法調試。

請告訴我哪里出錯了

一個可能的問題是使用錯誤的prunsvr.exe 對於64位Java安裝,使用amd64/prunsvr.exe ,針對32位的java安裝,使用/prunsvr.exe在commons-deamon-xxx-bin-windows.zip文件。

這可能是很多事情。 首先檢查日志。 默認是在...

%SystemRoot%\\System32\\LogFiles\\Apache

從那里你應該能夠得到一個更具體的錯誤。 例如,類路徑、Java 路徑或其他一些無效的選項。

如果您是從服務管理器而不是命令行啟動服務,則需要在注冊表中設置 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>

此錯誤的原因是我沒有將prunsrv.exe重命名為TestService.exe 同樣,Prunmgr.exe 必須是 TestServicew.exe。

重命名這些文件非常重要。

我能夠在本地計算機上運行該服務,但在運行 Windows 2012R2 的 VM 上出現相同的錯誤。

這個問題是由兩個原因引起的:

  1. 對 jvm.dll 的引用

在 VM 上,我使用 JDK 安裝而不是簡單的 JRE,並且 JAVA_HOME 指向 JDK bin 文件夾。 我不得不將 --Jvm 參數從“auto”更改為位於 JRE 子文件夾中的實際 jvm.dll 文件。

  1. amd64 版本的 prunsrv.exe

盡管我更改了 --Jvm 設置,但該服務在啟動時仍然顯示錯誤。 我還必須使用 prunsrv.exe 的 amd64 版本來解決該問題。

我在我的筆記本電腦上遇到了同樣的問題,但它在其他具有相同配置的筆記本電腦上工作。

我檢查了%SystemRoot%\\System32\\LogFiles\\Apache\\commons-daemon.log 我發現以下錯誤缺少 Image File

然后我發現我們需要在所有參數上加上雙引號。 在你的例子中,如果你嘗試

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

如果有人覺得它有幫助。

我有同樣的問題“傳遞給系統調用的數據區域太小”。

這是因為程序在 StartMode=jvm 中找不到 jvm.dll。

解決方案:一切都取決於您的StartMode

  1. 如果--StartModejvm
    您必須將--jvm參數指定為jvm.dll路徑
  2. 如果--StartModejavaexe
    --jvm參數設置為auto (您的程序將作為名為java.exe單獨進程啟動)

只是將它與我​​的設置腳本進行了比較,我看到的唯一直接的事情是你應該讓你的內存設置看起來像

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

順便說一句,JRE 1.6.0_04 有點過時了......

HTH陀螺儀

我遇到了同樣的錯誤,但我所要做的就是以管理員身份運行腳本(在 Windows Server 2012 上)......顯然 Windows 2012 上的權限系統已更改:例如。 在 Windows Server 2008 上沒有發生此錯誤(相同的腳本)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM