第一種方法:
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,最後啓動服務就行了)