prunsrv.исполняемые услуги не запуск
Я пытаюсь установить и запустить службу с prunsrv.exe для приложения
Я могу установить службу в порядке, но служба не запускается и дает мне ошибку
также ниже приведена конфигурация, используемая для установки службы с помощью 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.
проблема была вызвана двумя причинами:
- ссылка на jvm.dll файлы
на виртуальной машине я использовал установку JDK вместо простой JRE, и JAVA_HOME указал на папку bin JDK. Мне пришлось изменить параметр --Jvm с "auto" на фактический jvm.dll файл, расположенный в подпапке JRE.
- на 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 эта ошибка не произошла (тот же сценарий).