2013-03-21 272 views
13

我試圖安裝並開始prunsrv.exe服務爲應用程序prunsrv.exe服務無法啓動

我能夠安裝的服務好嗎但服務不會啓動,並給我一個錯誤

enter image description here

而且下面是用來安裝該服務使用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% 

的上面的配置被打包到一個批處理文件被執行來安裝服務

此外,日誌文件不會生成,因爲我甚至不能調試。

請告訴我,我錯了

+0

什麼是無法啓動「測試」服務傳遞給系統調用的數據區域太小。錯誤任何想法?我的腳本與你的更新EXE名稱與服務名稱相同 – daemonThread 2014-09-17 06:29:39

回答

3

這樣做的原因錯誤是,我沒有重命名prunsrv.exeTestService.exe。同樣Prunmgr.exe必須是TestServicew.exe。

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

+1

這看起來確實非常重要。我遇到了同樣的問題,並顯示調試日誌「用戶名或密碼不正確。」當然這不是真的。重命名exe以符合服務名稱解決了我的問題。 – Newerth 2016-11-07 09:01:56

1

只是我的安裝腳本相比這一點,只有眼前的事情,我看到的是,你或許應該讓你的內存設置看起來像

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

順便說一句,JRE 1.6.0_04是有點過時犯錯......

HTH 陀螺

+0

我已經試過你提到的更改,但問題仍然存在。因爲指定的堆棧大小是kb,我用k作爲後綴,在這種情況下使用4000k – frewper 2013-03-21 10:05:38

4

如果您從服務管理器啓動服務而不是命令行,您需要在註冊表中設置CLASSPATH,JAVA_OPTS等。從here

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

在64位Windows procrun總是使用32:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName> 

其他參數在存儲在註冊表中:

的基本服務定義註冊表項下保持位註冊表視圖來存儲配置。這意味着參數將被存放在裏面:

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

不要忘記JAVA_HOME。 – hawkeye 2016-07-24 04:27:21

1

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

11

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

+1

這是我的問題。安裝32位java以匹配32位prunsvr,一切正常 – 2015-08-05 18:01:29

5

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

的%SystemRoot%\ SYSTEM32 \ LogFiles文件\ Apache的

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

+0

如果我在我的機器上看不到此文件夾,該怎麼辦?這是否意味着守護進程沒有正確設置? – Coffee 2015-10-31 19:18:34

2

如果有人覺得有幫助。 我有同樣的問題「傳遞給系統調用的數據區太小」。這是因爲程序在StartMode = jvm中找不到jvm.dll。

解決方案:全部取決於您的StartMode。 1)如果「--StartMode」是jvm,則必須指定「--jvm」參數作爲jvm.dll的路徑。2)如果「--StartMode」是java或exe,則將「--jvm」參數設置爲auto您的程序將作爲名爲java.exe的獨立程序啓動)

2

我在筆記本電腦中遇到了同樣的問題,但它在其他筆記本電腦上運行的配置相同。

我已檢查%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

2

我能夠在本地機器上運行該服務,但在運行Windows 2012R2的虛擬機上出現同樣的錯誤。

問題是由兩個原因造成的:

  1. 參考JVM.DLL

在VM我用JDK安裝的,而不是一個簡單的JRE和JAVA_HOME指向JDK斌夾。我必須將--Jvm參數從「auto」更改爲位於JRE子文件夾中的實際jvm.dll文件。

  • AMD64 prunsrv.exe
  • 的版本Allthough我改變了--Jvm設置,則服務仍然啓動過程中表現出的誤差。我也必須使用prunsrv.exe的amd64版本來解決問題。