web-dev-qa-db-fra.com

prunsrv.exe Le service ne démarre pas

J'essaie d'installer et de démarrer un service avec prunsrv.exe pour une application. 

Je peux installer le service, mais le service ne démarre pas et me donne une erreur 

enter image description here

La configuration utilisée pour installer le service à l'aide de prunsrv.exe est également indiquée ci-dessous.

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%

La configuration ci-dessus est empaquetée dans un fichier de commandes et est exécutée pour installer le service.

De plus, les fichiers journaux ne sont pas générés, ce qui ne permet même pas un débogage.

S'il vous plaît dites-moi où je me trompe

14
frewper

La raison de cette erreur est que je n’ai pas renommé prunsrv.exe en TestService.exe. De même, Prunmgr.exe doit être TestServicew.exe. 

Il est très important que ces fichiers soient renommés.

4
frewper

l’un des problèmes possibles est l’utilisation de prunsvr.exe incorrect. pour l'installation Java 64 bits, utilisez AMD64/prunsvr.exe, pour l'installation Java 32 bits, utilisez /prunsvr.exe dans le fichier commons-deamon-xxx-bin-windows.Zip.

14
Adem

Cela pourrait être beaucoup de choses. Vérifiez d'abord les journaux. La valeur par défaut est à ...

% SystemRoot%\System32\LogFiles\Apache

À partir de là, vous devriez pouvoir obtenir une erreur plus spécifique. Par exemple. Classpath, chemin Java ou une autre option non valide.

6
kervin

Si vous démarrez le service à partir du gestionnaire de services et non de la ligne de commande, vous devez définir CLASSPATH, Java_OPTS, etc. dans le registre. De ici

Les définitions de service de base sont conservées sous la clé de registre:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>

Des paramètres supplémentaires sont stockés dans le registre à l'adresse:

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

Sous Windows 64 bits, procrun utilise toujours une vue de registre 32 bits pour stocker la configuration. Cela signifie que les paramètres seront stockés à l'intérieur:

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

J'ai pu exécuter le service sur mon ordinateur local, mais la même erreur s'est produite sur un VM sous Windows 2012R2. 

Le problème a été causé par deux raisons:

  1. référence à jvm.dll

Sur le VM, j'ai utilisé une installation JDK au lieu d'un simple JRE et Java_HOME a pointé vers le dossier bin JDK. J'ai dû remplacer le paramètre --Jvm de "auto" par le fichier jvm.dll situé dans le sous-dossier JRE.

  1. Version AMD64 de prunsrv.exe

Bien que j'ai changé le paramètre --Jvm, le service a toujours montré l'erreur au démarrage. J'ai également dû utiliser la version AMD64 de prunsrv.exe pour résoudre le problème.

3
Jan Rasehorn

J'ai eu le même problème dans mon ordinateur portable, mais il fonctionnait sur d'autres ordinateurs portables qui ont la même configuration.

J'ai vérifié %SystemRoot%\System32\LogFiles\Apache\commons-daemon.log. J'ai trouvé l'erreur suivante Fichier image manquant

Ensuite, j'ai découvert qu'il fallait mettre des guillemets doubles sur tous les paramètres. Sur votre exemple, si vous essayez

pushd %CD%

Essayez ceci ci-dessous.

"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%"

EXEMPLE D'EXEMPLE http://www.Eclipse.org/jetty/documentation/current/startup-windows-service.html

2
Manoj John Manuel

Au cas où quelqu'un le jugerait utile. J'avais le même problème "La zone de données transmise à un appel système est trop petite". Ceci est dû au fait que le programme ne peut pas trouver jvm.dll dans StartMode = jvm.

Solution: tout dépend de votre StartMode. 1) si "--StartMode" est jvm, vous devez spécifier le paramètre "--jvm" comme chemin d'accès à jvm.dll 2) si "- StartMode "est le paramètre Java ou exe" --jvm "défini sur auto (votre programme sera lancé en tant que processus distinct nommé Java.exe)

2
Igor Tkachenko

Juste comparé à un de mes scripts d’installation, la seule chose que j’aperçois immédiatement est que vous devriez peut-être faire en sorte que vos paramètres de mémoire ressemblent à

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

Et au fait, JRE 1.6.0_04 est un peu obsolète ...

Gyroscope HTH

1
Gyro Gearless

J'ai eu la même erreur, mais tout ce que je devais faire était d'exécuter le script en tant qu'administrateur (sur Windows Server 2012) ... Apparemment, le système d'autorisation sur Windows 2012 a changé: ex. sur Windows Server 2008, cette erreur ne s'est pas produite (même script).

1
Erik