16

アプリケーション用にprunsrv.exeを使用してサービスをインストールして開始しようとしています

サービスを正常にインストールできますが、サービスが起動せず、エラーが発生します

ここに画像の説明を入力してください

また、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%

上記の設定はバッチファイルにパッケージ化され、サービスをインストールするために実行されます

また、ログファイルが生成されないため、デバッグすらできません。

どこが悪いのか教えてください

4

9 に答える 9

17

考えられる問題の1つは、間違った使用prunsvr.exeです。64ビットのJavaインストールの場合はamd64/prunsvr.exe、を使用します。32ビットのJavaインストールの場合は/prunsvr.exe、commons-deamon-xxx-bin-windows.zipファイルで使用します。

于 2015-04-01T11:03:02.523 に答える
7

これは多くのことかもしれません。まずログを確認します。デフォルトは...

%SystemRoot%\ System32 \ LogFiles \ Apache

そこから、より具体的なエラーを取得できるはずです。たとえば、クラスパス、Javaパス、またはその他のオプションが無効です。

于 2015-05-10T08:41:35.647 に答える
4

コマンドラインではなくサービスマネージャからサービスを開始する場合は、レジストリに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>
于 2013-07-14T15:40:13.740 に答える
4

prunsrv.exeこのエラーの理由は、名前をに変更しなかったためTestService.exeです。同様に、Prunmgr.exeはTestServicew.exeである必要があります。

これらのファイルの名前が変更されることは非常に重要です。

于 2014-02-28T11:15:46.780 に答える
4

ローカルマシンでサービスを実行できましたが、Windows2012R2で実行されているVMでも同じエラーが発生しました。

この問題の原因は次の2つです。

  1. jvm.dllへの参照

VMでは、単純なJREの代わりにJDKインストールを使用し、JAVA_HOMEはJDKbinフォルダーを指しています。--Jvmパラメーターを「auto」からJREサブフォルダーにある実際のjvm.dllファイルに変更する必要がありました。

  1. prunsrv.exeのamd64バージョン

--Jvm設定を変更しましたが、サービスの起動時にエラーが表示されました。また、問題を解決するには、amd64バージョンのprunsrv.exeを使用する必要がありました。

于 2016-10-17T15:20:10.630 に答える
3

私は自分のラップトップで同じ問題を抱えていましたが、同じ構成を持つ他のラップトップで動作していました。

確認し%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

于 2016-04-22T10:45:20.757 に答える
2

誰かがそれが役に立つと思った場合に備えて。

同じ問題が発生しました。「システムコールに渡されるデータ領域が小さすぎます」。

これは、プログラムがStartMode=jvmでjvm.dllを見つけることができないためです。

解決策:すべてはあなたに依存しますStartMode

  1. の場合:へのパスとしてパラメータ を指定する必要があり--StartModeますjvm
    --jvmjvm.dll
  2. if --StartModeisjavaまたはexe
    set --jvmparameter as auto(プログラムはという名前の別のプロセスとして起動されますjava.exe
于 2016-02-05T11:00:03.573 に答える
1

これを私のセットアップスクリプトと比較したところ、私がすぐに目にするのは、メモリ設定を次のように設定する必要があるということだけです。

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

ちなみに、JRE1.6.0_04はやや時代遅れです...

HTHジャイロ

于 2013-03-21T09:24:01.247 に答える
1

同じエラーが発生しましたが、管理者としてスクリプトを実行するだけです(Windows Server 2012の場合)...どうやらWindows 2012のアクセス許可システムが変更されたようです:例:Windows Server 2008では、このエラーは発生しませんでした(同じスクリプト)。

于 2014-10-21T07:31:52.990 に答える