Подтвердить что ты не робот

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%

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

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

Скажите, пожалуйста, где я ошибаюсь

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

% SystemRoot%\System32\LogFiles\Apache

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

Ответ 4

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

Ответ 5

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

Решение: все зависит от вашего StartMode. 1) если "--StartMode" - jvm, вы должны указать параметр "--jvm" как путь к jvm.dll 2) если "--StartMode" является java или exe, установите параметр "--jvm" как автоматический (ваша программа будет запущена как отдельные procces с именем java.exe)

Ответ 6

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

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

Ответ 7

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

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

  • ссылка на jvm.dll

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

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

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

Ответ 8

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

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

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

НТН Гироскоп

Ответ 9

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