prunsrv.исполняемые услуги не запуск

Я пытаюсь установить и запустить службу с 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:setupsCommons_Daemoncommons-daemon-1.0.14-bin-windowslogs
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_LOGLEVEL=INFO

REM Path to java installation
set PR_JVM=C:Program FilesJavajre1.6.0_04binclientjvm.dll
set PR_CLASSPATH=D:setupsCommons_Daemoncommons-daemon-1.0.14-bin-windowstemp.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%

вышеуказанная конфигурация упакована в пакетный файл, выполняется для установки службы

также файлы журнала не являются генерируется, из-за чего я не могу даже отлаживать.

Пожалуйста, скажите мне, где я ошибаюсь

9 ответов


одна из возможных проблем - использование неправильного prunsvr.exe. для 64-разрядной установки java используйте amd64/prunsvr.exe, для 32-битной установки java используйте /prunsvr.exe в commons-deamon-xxx-bin-windows.сжатый файл.


Это может быть много вещей. Сначала проверьте журналы. По умолчанию на...

%SystemRoot%\System32\LogFiles\Apache

оттуда вы сможете получить более конкретную ошибку. Например. Недопустимый путь к классам, путь Java или какой-либо другой параметр.


причиной этой ошибки было то, что я не переименовывать prunsrv.exe до TestService.exe. Аналогично Prunmgr.exe должен быть TestServicew.исполняемый.

очень важно, чтобы эти файлы были переименованы.


Если вы запускаете службу из диспетчера служб, а не из командной строки, вам нужно установить путь к классам, 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>

Я смог запустить службу на своей локальной машине, но я получил ту же ошибку на виртуальной машине, работающей с Windows 2012R2.

проблема была вызвана двумя причинами:

  1. ссылка на jvm.dll файлы

на виртуальной машине я использовал установку JDK вместо простой JRE, и JAVA_HOME указал на папку bin JDK. Мне пришлось изменить параметр --Jvm с "auto" на фактический jvm.dll файл, расположенный в подпапке JRE.

  1. на amd64 версия prunsrv.exe

несмотря на то, что я изменил параметр --Jvm, служба все еще показывала ошибку во время запуска. Мне также пришлось использовать версию prunsrv amd64.exe для решения проблемы.


в случае, если кто-то найдет его полезным. У меня была та же проблема: "область данных, переданная системному вызову, слишком мала". Это потому, что программа не может найти модули.dll в StartMode=jvm.

решение: все зависит от вашего StartMode. 1) Если "--StartMode" - jvm, вы должны указать параметр "--jvm" как путь к jvm.файл DLL 2) Если "--StartMode" является java или exe set "--jvm" параметр как auto (ваша программа будет запущена как отдельные процессы с именем java.exe)


у меня была та же проблема в моем ноутбуке, но он работал на других ноутбуках, которые имеют ту же конфигурацию.

я проверил %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


просто сравнил это с моим сценарием установки, единственное, что я вижу, это то, что вы, возможно, должны сделать ваши настройки памяти похожими

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

и, кстати, JRE 1.6.0_04 несколько устарел...

HTH Гироскоп!--2-->


У меня была та же ошибка, но все, что мне нужно было сделать, это запустить сценарий от имени администратора (на windows server 2012)... По-видимому, система разрешений на windows 2012 изменилась: ex. в windows server 2008 эта ошибка не произошла (тот же сценарий).