遇到一客户,jar包需要运行在windows上,于是抽点时间研究了一下。平时在windows开发java项目过程中,如果需要运行jar包, cmd 中一条命令:java -jar test.jar 就搞定。但这有个问题,cmd窗口关闭,java服务就关闭。一般通过两种方法:
以服务的形式运行
通过nssm 将jar 定义成windows服务的形式。nssm获取 。
注: 下载后解压得到nssm.exe, 建议配置到环境变量里面去
其中记住里面常用的四个命令基本就够用
- nssm install [servicename] 将jar安装成服务
- nssm start [servicename]启动服务,安装成功后可以右键服务启动
- nssm stop [servicename]停止服务,安装成功后可以右键服务停上
- nssm remove [servicename]删除服务
例如,本地C:\Work\jar 中wms.jar 以服务的形式启动。
- nssm install wmsbackend java -jar C:\Work\jar\wms.jar,安装成功后可在服务列表中查看此服务,如下图所示:
- nssm start wmsbackend
相应的,在服务列表里可以查看本服务已启动
3. nssm stop wmsbackend
4. nssm remove wmsbackend
注:
- nssm install 接的java命令可以自己加入jvm参数
- 以服务的形式运行无法查看运行日志,即便在开发过程配置了相关的日志输出规则。因此需要查看日志建议尝试下面这种方法
以后台的形式运行
在linux中以后台的方式运行jar是以nohup来运行。在windows中,jdk提供了javaw 命令,即: javaw -jar C:\Work\jar\wms.jar 。通过jps -l 可以查看启动的jar 。但这种方式还是没法查看log。很简单,在命令后加入日志输入路径即可。例如:javaw -jar C:\Work\jar\wms.jar >> c:\Work\jar\b.txt 。
**注:**输出时:>>是追加的方式,>是覆盖的方式 。
截止现在,jar可以在windows后台运行,日志也可以输出。但没法实时查看。在linux中以tail -f 的形式实时查看日志。在windows中方法也有好几种,但比较安全的方式是用notepad++ 中日志监控的方式,如下图所示: