网站首页 > java教程 正文
1. 创建批处理脚本创建一个批处理文件(例如 app.bat),并在其中编写启动和停止 JAR 包的命令,并将输出重定向到日志文件。
app.bat
@echo off
setlocal
:: 设置环境变量
set JAVA_HOME=C:\Program Files\Java\jdk-17 ;; 根据你的 JDK 安装路径进行修改
set PATH=%JAVA_HOME%\bin;%PATH%
:: 设置 JAR 文件路径
set JAR_FILE=path\to\your\application.jar ;; 修改为你的 JAR 文件路径
set LOG_FILE=path\to\your\app.log ;; 修改为你希望的日志文件路径
:: 设置 JVM 参数
set JVM_OPTS=-Xms512m -Xmx1024m ;; 根据需要调整 JVM 参数
:menu
cls
echo.
echo -----------------------------------------
echo 1. 启动应用
echo 2. 停止应用
echo 3. 查看日志
echo 4. 退出
echo -----------------------------------------
echo.
set /p choice=请输入选项 (1, 2, 3, 4):
if "%choice%"=="1" goto start
if "%choice%"=="2" goto stop
if "%choice%"=="3" goto view_log
if "%choice%"=="4" goto exit
goto menu
:start
echo 正在启动应用...
echo [%(date)T] 启动应用 >> %LOG_FILE%
start "MyApp" java %JVM_OPTS% -jar %JAR_FILE% > %LOG_FILE% 2>&1
echo 应用已启动。
echo [%(date)T] 应用已启动 >> %LOG_FILE%
pause
goto menu
:stop
echo 正在停止应用...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr :8080') do set PID=%%a ;; 假设应用监听 8080 端口
if not defined PID (
echo 没有找到运行的应用。
echo [%(date)T] 没有找到运行的应用 >> %LOG_FILE%
) else (
taskkill /F /PID %PID%
echo 应用已停止。
echo [%(date)T] 应用已停止 >> %LOG_FILE%
)
pause
goto menu
:view_log
echo 查看日志...
type %LOG_FILE%
pause
goto menu
:exit
echo 退出脚本。
endlocal
exit /b 0
2. 解释脚本
?设置环境变量:设置 JAVA_HOME 和 PATH,确保脚本可以找到 Java 运行时环境。
?设置 JAR 文件路径:指定 JAR 文件的路径和日志文件的路径。
?设置 JVM 参数:根据需要设置 JVM 的内存参数。
?菜单:提供一个简单的菜单供用户选择操作。
?启动应用:
?使用 java -jar 命令启动 JAR 文件,并将输出重定向到日志文件。
?在启动前和启动后向日志文件中添加时间戳信息。
?停止应用:
?通过查找特定端口(假设是 8080)来获取进程 ID,并使用 taskkill 命令终止该进程。
?在停止前后向日志文件中添加时间戳信息。
?查看日志:显示日志文件的内容。
?退出:退出脚本。
3. 使用脚本
1. 将上述内容保存为 app.bat。
2. 打开命令提示符,导航到保存 app.bat 的目录。
3. 运行 app.bat 脚本: app.bat
4. 注意事项
?端口号:在 :stop 部分,假设应用监听 8080 端口。如果你的应用监听其他端口,请相应地修改 findstr :8080 中的端口号。
?JVM 参数:根据你的应用需求调整 JVM_OPTS 中的参数。
?日志文件:确保日志文件路径存在并且可写。
通过这个脚本,你可以在 Windows 环境下方便地启动和停止 Java 应用程序的 JAR 包,并且能够查看详细的日志输出。
猜你喜欢
- 2024-10-06 Java基础——第一个Java程序(第一个java程序的几个步骤)
- 2024-10-06 创建第一个Java程序(编写第一个java程序)
- 2024-10-06 超详细的Java学习路线清单,拥有了这套资源,即可快速进阶Java
- 2024-10-06 Java实用教程-Java基本语法-Java程序的构成
- 2024-10-06 好程序员Java教程分享Java的运行机制是什么
- 2024-10-06 Java程序开发的三个步骤(java程序开发的三个步骤是)
- 2024-10-06 Java基础知识点(java基础知识点面试题)
- 2024-10-06 学习第一个Java程序(java第一阶段要学的知识)
- 2024-10-06 JAVA学习基础之简单JAVA 程序(java入门编程教程)
- 2024-10-06 Java程序基础知识(java程序讲解)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)