众所周知,springboot可以用maven直接打包成.jar文件。打包后的文件在windows上直接双击就可以运行,很方便。
但是这样做也有缺点:
1.运行时没有界面,需要停止程序时不太好办(可以从任务管理器直接结束,但是多个这样的程序同时运行时无法从进程名称上区分)。
2.服务器重启之后,程序无法实现自启动。
第一点可以用命令行
java -jar test.jar
来实现。但是这样需要一直保持命令行窗口打开,对于作者这样有强迫症的人来说简直就是一个噩梦。
解决方法比较多,下面介绍一种可行的方法:
winsw(github地址)是一个开源的专门用于制作windows服务的小工具,我们可以利用它来讲java程序做成windows服务。
1.下载winsw程序,选择对应的版本。
2.将WinSW.exe文件复制到java程序所在文件夹中。
3.将java程序重命名,去掉名称中的“.”。例如test-1.0.jar ----> test.jar
4.将WinSW.exe重命名为test.exe
5.新建一个xml文件,命名为test.xml,写入以下内容(还有一些参数自己去看github说明):
<?xmlversion="1.0" encoding="UTF-8"?>
<service>
<id>test</id>
<name>test-serv</name>
<description>this is demo</description>
<executable>java</executable>
<arguments>-jar "test.jar"</arguments>
<logmode>rotate</logmode>
</service>
6.命令行定位到当前目录
test.exe install
到这里,服务就安装完成啦,可以去windows服务列表中启动程序了。
(如果需要更新程序,只需要先将服务停止,再将新文件重命名为test.jar,最后启动服务就行了)
ps:另一个windows服务制作工具nssm(官网链接)亲测不可用,会出现找不到主类的错误,这是因为springboot打包后的文件结构不同,如果非要使用这个工具的话需要在java程序中修改一些东西。