64

実行可能な JAR ファイルがあります。その JAR の Windows サービスを作成することは可能ですか? 実際には、起動時にそれを実行したいだけですが、その JAR ファイルを起動フォルダーにもレジストリにも配置したくありません。

4

7 に答える 7

55

これまでに見つけた最も簡単な解決策は、Non-Sucking Service Managerです。

使用法は

nssm install <servicename> "C:\Program Files\Java\jre7\java.exe" "-jar <path-to-jar-file>"
于 2013-09-09T12:42:20.630 に答える
21

nssm.exe を使用しますが、AppDirectory を設定しないと、必要なライブラリやリソースにアクセスできなくなります。デフォルトでは、nssm は現在の作業ディレクトリを、jar ではなくアプリケーションの java.exe に設定します。バッチ スクリプトを作成するには、次のようにします。

    pushd <path-to-jar>
    nssm.exe install "<service-name>" "<path-to-java.exe>" "-jar <name-of-jar>"
    nssm.exe set "<service-name>" AppDirectory "<path-to-jar>"

これにより、サービスの一時停止の問題が修正されます。

于 2016-02-25T17:11:53.477 に答える
12

私はApache Commons Daemonを試してきました。Windows ( Procrun ) と UNIX ( Jsvc ) をサポートしています。Advanced Installer には、ダウンロードするサンプル プロジェクトを含むJava サービス チュートリアルがあります。javaservice.jar を Windows サービスとして実行している場合は、「telnet 4444」を使用してテストできます。私はJavaを書くのではなく、Java Windowsサービスを実行することに重点を置いていたので、彼らの例を使用しました。

于 2010-03-17T22:33:50.267 に答える
8

タヌキはしばらく前に jsw のライセンスを変更しました。もし私がプロジェクトを始めるとしたら、多かれ少なかれ JWS を模倣したオープン ソース実装であるhttp://yajsw.sourceforge.net/を使用します。次に、それを基に構築し、さらに改善します。

編集: 私はいくつかのプラットフォーム (Windows、いくつかの Linux...) で YAJSW を数年間使用してきました。

于 2009-10-24T13:00:44.753 に答える
5

procrun を使用して、prunsrv をアプリケーション ディレクトリ ( download ) にコピーし、次のように install.bat を作成する必要があります。

set PR_PATH=%CD%
SET PR_SERVICE_NAME=MyService
SET PR_JAR=MyService.jar
SET START_CLASS=org.my.Main
SET START_METHOD=main
SET STOP_CLASS=java.lang.System
SET STOP_METHOD=exit
rem ; separated values
SET STOP_PARAMS=0
rem ; separated values
SET JVM_OPTIONS=-Dapp.home=%PR_PATH%
prunsrv.exe //IS//%PR_SERVICE_NAME% --Install="%PR_PATH%\prunsrv.exe" --Jvm=auto --Startup=auto --StartMode=jvm --StartClass=%START_CLASS% --StartMethod=%START_METHOD% --StopMode=jvm --StopClass=%STOP_CLASS% --StopMethod=%STOP_METHOD% ++StopParams=%STOP_PARAMS% --Classpath="%PR_PATH%\%PR_JAR%" --DisplayName="%PR_SERVICE_NAME%" ++JvmOptions=%JVM_OPTIONS%

だと思います

  • jar と prunsrv.exe がある同じディレクトリからこれを実行します。
  • jarには機能するMANIFEST.MFがあります
  • JVMに登録されたシャットダウンフックがあります(たとえば、Springのcontext.registerShutdownHook()を使用)...
  • jar 以外のファイルに相対パスを使用しない (たとえば、log4j はlog4j.appender.X.File=${app.home}/logs/my.logなどと一緒に使用する必要があります)

詳細については、procrunマニュアルこのチュートリアルを確認してください。

于 2013-02-28T13:18:13.633 に答える