Windows启动和停止jar包命令

一、windows启动jar包命令

命令放到 bat文件中
1、普通启动

title XXX
chcp 65001
java -Dfile.encoding=utf-8  -jar XXX.jar

加上-Dfile.encoding=utf-8后,不乱码
加上chcp 65001后,日志的中文不乱码

注:这种方式启动后,窗口不能关闭,关闭窗口,服务也关闭。

2、后台启动

@echo off
start "XXX" javaw -jar -Dfile.encoding=utf-8 XXX.jar
exit

注:这种方式启动后,无窗口。

将上面的命令保存成bat文件即可方便启动。

3、其他
日志打印:

java -Dfile.encoding=utf-8  -jar XXX.jar  >out.log  2>&1 &

关闭窗口:

%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit

4、综合起来,最终的命令:

后台启动方式,没有日志:

@echo off
chcp 65001
start "XXX" javaw -jar -Dfile.encoding=utf-8 XXX.jar
exit

注意:
不需要在后面添加>out.log 2>&1 &,这样的写法,后台启动方式,日志输出不到文件中,会产生文件,但是out.log没有内容。
如果要输出日志到文件中,则用有窗口的启动方式,使用java -Dfile.encoding=utf-8 -jar XXX.jar >out.log 2>&1 & 的命令。如下

有窗口启动方式,有日志:

@echo off
chcp 65001
java -Dfile.encoding=utf-8  -jar XXX.jar  >out.log  2>&1 &
exit

会有一个黑窗口,显示了Active code page: 65001,日志打印到了out.log文件中。

后台启动方式,有日志:

@echo off
chcp 65001
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
java -Dfile.encoding=utf-8  -jar XXX.jar  >log.log  2>&1 &
exit

特别说明:
如果服务有自定义日志,那么不需要额外打印到日志文件中,直接使用后台启动方式即可

@echo off
start "XXX" javaw -Dfile.encoding=utf-8  -jar xxx.jar
exit

在这里插入图片描述

在这里插入图片描述
指定命名空间:

java -jar -Xms256m -Dspring.cloud.nacos.discovery.namespace=fb4d22ff-0a57-44ff-a89d-c8db364cb79f -Dspring.cloud.nacos.discovery.server-addr=172.16.1.141:8848 -Dspring.cloud.nacos.config.namespace=fb4d22ff-0a57-44ff-a89d-c8db364cb79f -Dspring.cloud.nacos.config.server-addr=172.16.1.141:8848 -Dserver.port=18010 -Xmx512m mall-cloud-system-app.jar

二、windows停止jar命令

查看所有java进程:

tasklist | findstr "java"

在这里插入图片描述

查看某端口的java进程:

netstat -ano | findstr 8106

在这里插入图片描述
杀死某个pid的java任务:

taskkill /f /pid 4216

在这里插入图片描述

<think>嗯,用户想了解如何用bat脚本启动停止jar程序。好的,我需要先理清楚bat脚本的基本结构常用命令。首先,启动jar通常用java -jar命令,这部分应该没问题。停止的话可能需要找到进程ID然后终止,这需要用到taskkill命令。 接下来,我需要考虑用户可能的场景。他们可能是在Windows服务器上部署Java应用,希望通过简单的脚本来管理服务。用户可能对bat脚本不太熟悉,所以需要详细说明每个步骤。 启动脚本比较简单,直接写java -jar命令,加上参数比如-Xmx1024m设置内存。但要注意,如果用户的环境变量里没有Java的路径,可能需要指定全路径。不过一般安装Java后会自动设置,所以可能不需要。但还是要提醒用户注意Java环境变量是否正确配置。 停止脚本稍微复杂点,需要根据jar名找到进程ID。这里可以用wmic命令或者tasklist来查找进程。但wmic在Windows 10以后可能被弃用了,不过大部分情况还能用。或者用tasklist配合findstr过滤出jar进程,然后提取PID。然后用taskkill /PID结束进程。需要注意的是,如果有多个同名进程,可能需要循环处理或者确保唯一性。 然后,用户可能需要一个整合的脚本,带有启动停止的选项。这时候可以用choice命令让用户选择操作。同时,可能需要添加错误处理,比如启动时检查文件是否存在,停止时检查进程是否存在,避免报错。 另外,日志记录也是一个重要点。启动时重定向输出到日志文件,方便后续排查问题。还有,后台运行的问题,如果用start /B的话,bat窗口不会保持,但可能需要等待进程结束,或者用start "" java ... 来启动新窗口。这里需要根据用户需求,是希望脚本阻塞还是立即返回。 安全性方面,强制终止进程可能会造成数据丢失,需要提醒用户确保应用有正确的关闭机制。比如,先发送关闭信号,等待一段时间再强制终止。不过用taskkill /F是强制终止,可能需要根据应用情况调整。 最后,示例脚本需要测试,确保每个步骤正确。比如,启动时检查jar是否存在,停止时正确获取PID。可能还需要处理路径问题,比如脚本jar是否在同一目录,是否需要cd切换目录。 总结下来,步骤应该是:启动脚本编写,停止脚本编写,整合脚本,加上错误处理日志功能,最后给出注意事项常见问题。需要详细说明每个命令的作用,以及可能遇到的问题,比如Java环境变量、多实例情况等。</think>下面我将分步骤介绍如何通过Windows批处理脚本(.bat)实现Java Jar程序的启动停止: 一、基础启停脚本原理 1. 启动脚本核心命令: ```bat java -jar YourApp.jar ``` 或带参数形式: ```bat java -Xmx1024m -Dspring.profiles.active=prod -jar YourApp.jar > app.log 2>&1 ``` 2. 停止脚本核心命令: ```bat wmic process where "commandline like '%YourApp.jar%'" call terminate ``` 或更安全的版本: ```bat for /f "tokens=2" %%i in ('tasklist ^| findstr "YourApp.jar"') do taskkill /PID %%i /F ``` 二、完整脚本示例(start_stop.bat) ```bat @echo off chcp 65001 > nul title Jar程序管理 :menu echo 1. 启动程序 echo 2. 停止程序 echo 3. 退出 choice /c 123 /n /m "请选择操作:" if errorlevel 3 exit /b if errorlevel 2 goto stop if errorlevel 1 goto start :start if exist "YourApp.jar" ( echo 正在启动程序... start "" javaw -jar YourApp.jar --server.port=8080 timeout /t 3 > nul tasklist | findstr "java" && echo 启动成功! || echo 启动失败! ) else ( echo 错误:未找到YourApp.jar ) goto menu :stop echo 正在停止程序... for /f "tokens=2" %%i in ('tasklist ^| findstr "YourApp.jar"') do ( taskkill /PID %%i /F > nul echo 已终止进程:%%i ) timeout /t 2 > nul tasklist | findstr "java" > nul && echo 停止失败! || echo 已完全停止 goto menu ``` 三、关键点说明 1. 启动优化: - 使用`javaw`代替`java`可实现后台运行 - `start ""`创建新控制台窗口 - 输出重定向`> app.log`记录日志 - 端口参数`--server.port=8080`可根据需要修改 2. 停止安全: - `/F`参数强制终止进程 - 循环检测确保完全终止 - 建议在应用中实现Shutdown Hook实现优雅关闭 四、高级功能扩展 1. 自动重启脚本: ```bat :retry call start_stop.bat stop timeout /t 5 call start_stop.bat start ping -n 60 127.0.0.1 > nul # 监控60秒 tasklist | findstr "java" || goto retry ``` 2. 服务化部署(需管理员权限): ```bat sc create MyJarService binPath= "C:\path\to\start_stop.bat" start= auto ``` 五、注意事项 1. 路径问题: - 确保java.exe在系统PATH中 - 使用绝对路径更可靠(如"C:\Program Files\Java\jdk1.8.0\bin\java") 2. 常见错误处理: - 端口占用:netstat -ano | findstr "8080" - 内存溢出:添加-XX:+HeapDumpOnOutOfMemoryError参数 - 编码问题:脚本开头添加chcp 65001解决中文乱码 3. 安全建议: - 不要直接暴露在公网 - 定期清理日志文件 - 使用nssm等工具实现更专业的服务管理 实际部署时,请根据具体需求调整JVM参数、启动配置日志管理策略。对于生产环境,建议结合使用专业的进程管理工具(如Apache Commons Daemon)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值