如何把jar包做成windows服務

第一種方法:

1, 準備工具

Hello.jar: 可運行的包。這裏我的是最簡單的say helloworld! Main函數所在類路徑:org.springframework.boot.loader.JarLauncher(這個是一般springboot項目的啓動類),

JavaService: 下載地址  http://download.forge.ow2.org/javaservice/JavaService_2_0_10-amd64.zip (WIN 64位)

                                     http://download.forge.ow2.org/javaservice/JavaService-2.0.10.zip (WIN 32位)

JavaService 是一款能把 Java 應用程序做成 NT 服務的實用工具, 一般用於啓動應用服務器.

2, 設置環境變量

環境變量1、JAVA_HOME: JDK 安裝路徑

環境變量2、JAR_HOME:JAR_HOME/bin爲JAR包所在路徑,即我們的工作路徑。

3, 解壓JavaService的zip 包,把 JavaService.exe和jar包 複製到 %JAR_HOME%/bin 目錄下

4, 創建一個目錄 %JAR_HOME%/logs,存放日誌文件。

5, 打開 cmd(以管理員身份進行), 進入 %JAR_HOME%bin 目錄, 執行命令:

JavaService.exe -install HelloWorld "%JAVA_HOME%/jre/bin/server/jvm.dll"

-Djava.class.path="%JAR_HOME%/bin/hello.jar;%JAVA_HOME%/lib/tools.jar"

-Xms64M –Xmx256M

-start org.springframework.boot.loader.JarLauncher

 -stop org.springframework.boot.loader.JarLauncher

-method systemExit

-out "%JAR_HOME%/logs/out.log"

-err "%JAR_HOME%/logs/err.log"

-current "%JAR_HOME%/bin"

-depends MySQL

-auto –overwrite

注:HelloWorld :服務名稱(可自行修改);

-Xms64M –Xmx256M Java虛擬機支持的內存最小值和最大值;

-depends MySQL 爲可選項(一般不加);

更詳細情況查看:JavaService,zip 包中的文檔。

具體命令行參數說明, 運行 JavaService.exe -help 查看

7, 當執行上述命令後出現   “The HelloWorld automatic service was successfully installed”  字樣,則表示服務已經創建成功;

"net start HelloWord" -  啓動服務,"net stop HelloWord" -  停止服務,"sc delete HelloWorld" -刪除服務

 

##這裏寫了幾個簡易的安裝,啓動和關閉服務的腳本,只需將jar包,JavaService.exe,腳本文件和一個配置文件config.ini放在同一路徑下即可,注意腳本必須在管理員權限下打開才行:

config.ini

//所要生成Windows服務的名字
serviceName=HelloWorldService
//Jar包的名字
jarName=HelloWorld
install.bat

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
for /f "delims=" %%i in ('type "config.ini"^| find /i "="') do set %%i
set path=%cd%
md "%path%/logs"
echo %serviceName%
echo %jarName%
echo %JAVA_HOME%
echo %path%
JavaService.exe -install %serviceName% "%JAVA_HOME%/jre/bin/server/jvm.dll" -Djava.class.path="%path%/%jarName%.jar;%JAVA_HOME%/lib/tools.jar" -Xms64M Xmx256M -start org.springframework.boot.loader.JarLauncher -stop org.springframework.boot.loader.JarLauncher -method systemExit -out "%JAR_HOME%/logs/out.log" -err "%JAR_HOME%/logs/err.log" -current "%path%" -auto -overwrite
 
 
startup.bat

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
for /f "delims=" %%i in ('type "config.ini"^| find /i "="') do set %%i
net start %serviceName%
shutdown.bat

@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
for /f "delims=" %%i in ('type "config.ini"^| find /i "="') do set %%i
net stop %serviceName%
第二種方法:

1.在idea中用maven將程序打成jar,放到運行的目錄中。

2.去github上面下載winsw: https://github.com/kohsuke/winsw/releases

 

3. 將WinSW.NET4.exe文件複製到java程序所在文件夾中

4.將java程序重命名,去掉名稱中的“.”。例如HelloWorld-1.0.jar  ---->  HelloWorld.jar

5.將WinSW.exe重命名爲HelloWorld.exe(和jar同名)

6. 新建一個xml文件,命名爲HelloWorld.xml,寫入以下內容(還有一些參數自己去看github說明):

<service>

     <id>HelloWorld</id>

     <name>HelloWorld</name>

     <description>This is HelloWorld service.</description>

     <!-- java環境變量 -->

     <env name="JAVA_HOME" value="%JAVA_HOME%"/>

     <executable>java</executable>

    <arguments>-jar "E:\springboot\ HelloWorld.jar"</arguments>

     <!-- 開機啓動 -->

     <startmode>Automatic</startmode>

     <!-- 日誌配置 -->

     <logpath>%BASE%\log</logpath>

     <logmode>rotate</logmode>

 </service>

如果沒有配置環境變量,直接將三個文件扔到java的bin目錄下運行。去掉標籤<env name="JAVA_HOME"           value="%JAVA_HOME%"/>

  7.命令行定位到當前目錄,執行: 

 test.exe  install

8. 去windows服務列表中啓動程序。

(如果需要更新程序,只需要先將服務停止,再將新文件重命名爲HelloWorld.jar,最後啓動服務就行了)
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章