问题描述
在企业开发中,难免会遇到jar包的部署,那么如果服务器是Windows系统,我们又将如何部署我们的java应用,并让其在后台运行呢?下面,让我们直接上方法。
解决方案
配置环境变量
确保已经安装了Java并配置了JAVA_HOME环境变量。
添加Java运行时环境到系统的PATH环境变量中,以便系统能够找到Java执行文件。
注意:由于javaw不关联控制台,某些环境下可能无法捕获输出,此时建议使用方法二
方案一 :使用批处理文件
1.创建一个批处理文件(以.bat结尾,如run.bat),用于启动Java应用。
编写批处理文件,包括后台启动jar包的命令以及日志文件保存位置。
@echo off
start javaw -jar -Dfile.encoding=UTF-8 hello.jar > "D:\logs\output.log" 2>&1
exit
编写完脚本,保存,并双击运行,此时jar包将在后台进行运行,并在指定位置输出日志,关闭窗口后,程序照样运行
注:上述脚本中hello.jar需要替换为自己的jar包名称。
方案二:使用VBScript隐藏窗口并重定向
- 创建VBScript文件(如run.vbs),内容如下:
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "cmd /c java -jar D:\hello.jar > D:\logs\output.log 2>&1", 0, True Set WshShell = Nothing
- 说明:
cmd /c:执行命令后关闭命令窗口。
0:隐藏窗口。
True:等待命令执行完成(若需后台运行可改为False)。 - 运行VBScript:双击run.vbs,日志将写入文件且无可见窗口。
关闭后台启动的服务
方案1:通过 任务管理器 手动关闭
- 打开任务管理器
- 查找 Java 进程:
切换到 详细信息 选项卡。
查找进程名为:
java.exe(控制台模式启动的 Java 进程)
javaw.exe(无控制台窗口的 Java 进程,常见于后台服务或 GUI 应用) - 结束进程
找到进程后点击结束。
在后台启动的jar包,可以直接在cmd命令窗口输入命令 taskkill -f -t -im javaw.exe 就能关闭此 jar 进程,但是需要注意的是,如果有其它java应用也在后台运行,此命令将关闭所有jar进程,因此建议使用以下命令关闭后台启动的java服务
# 根据端口号找到进程 pid
netstat -ano |findstr 端口号
# 再用 taskkill 关闭该进程
taskkill /f /t /im pid
如下运行结果:
后台运行Java应用
使用Windows任务计划程序。搜索任务计划程序
,并以管理员身份运行,在任务计划程序
窗口创建基本任务,触发器选择计算机启动时
,选择之前的run.vbs
脚本可以将Java应用设置为定时任务,并选择在后台运行。