windows后台运行java

时间:2024-04-09 07:22:19

遇到一客户,jar包需要运行在windows上,于是抽点时间研究了一下。平时在windows开发java项目过程中,如果需要运行jar包, cmd 中一条命令:java -jar test.jar 就搞定。但这有个问题,cmd窗口关闭,java服务就关闭。一般通过两种方法:

以服务的形式运行

通过nssm 将jar 定义成windows服务的形式。nssm获取
注: 下载后解压得到nssm.exe, 建议配置到环境变量里面去

其中记住里面常用的四个命令基本就够用

  1. nssm install [servicename] 将jar安装成服务
  2. nssm start [servicename]启动服务,安装成功后可以右键服务启动
  3. nssm stop [servicename]停止服务,安装成功后可以右键服务停上
  4. nssm remove [servicename]删除服务

例如,本地C:\Work\jar 中wms.jar 以服务的形式启动。

  1. nssm install wmsbackend java -jar C:\Work\jar\wms.jar,安装成功后可在服务列表中查看此服务,如下图所示:
    windows后台运行java
    windows后台运行java
  2. nssm start wmsbackend

windows后台运行java
相应的,在服务列表里可以查看本服务已启动
3. nssm stop wmsbackend
4. nssm remove wmsbackend

注:

  1. nssm install 接的java命令可以自己加入jvm参数
  2. 以服务的形式运行无法查看运行日志,即便在开发过程配置了相关的日志输出规则。因此需要查看日志建议尝试下面这种方法

以后台的形式运行

在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++ 中日志监控的方式,如下图所示:
windows后台运行java