Windows上部署jar包并在后台运行的方案

问题描述

在企业开发中,难免会遇到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隐藏窗口并重定向

  1. 创建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
    
  2. 说明:
    cmd /c:执行命令后关闭命令窗口。
    0:隐藏窗口。
    True:等待命令执行完成(若需后台运行可改为False)。
  3. 运行VBScript:双击run.vbs,日志将写入文件且无可见窗口。

关闭后台启动的服务

方案1:通过 任务管理器 手动关闭

  1. 打开任务管理器
  2. 查找 Java 进程:
    切换到 详细信息 选项卡。
    查找进程名为:
    java.exe(控制台模式启动的 Java 进程)
    javaw.exe(无控制台窗口的 Java 进程,常见于后台服务或 GUI 应用)
  3. 结束进程
    找到进程后点击结束。
    在这里插入图片描述

在后台启动的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应用设置为定时任务,并选择在后台运行。
在这里插入图片描述

<think>首先,用户的问题是如何在Windows环境下部署Java项目的JAR。我需要基于提供的引用内容来构建回答,确保回答真实可靠。 参考引用: - 引用[1]:提到在Windows部署jar,关闭命令提示符后后台运行,建议使用工具如winsw将jarWindows服务运行。 - 引用[2]:讨论将Java项目打为exe安装文件,使用exe4j Wizard和Inno Setup Compiler工具,括步骤如安装工具、准备文件等。 - 引用[3]:详细描述使用winsw工具部署Java项目作为服务,括修改XML文件、配置服务等。 - 引用[4]:介绍在Windows部署JAR,使用命令安装和卸载服务。 用户的问题聚焦在部署JAR,而不是打为exe安装文件。所以,我应该优先考虑直接部署JAR作为服务的方法,因为引用[1]、[3]、[4]都涉及这个方面。 回答结构: - 清晰、逐步解决问题。 - 使用中文。 - 遵循系统级指令:行内数学表达式用$...$,独立公式用$$...$$(但这里可能不需要数学公式),LaTeX语法正确。 - 生成相关问题。 - 在引用段落末尾添加引用标识。 关键步骤: 1. **准备工具**:推荐使用winsw工具,因为它可以将JAR作为Windows服务运行。 2. **下载和设置winsw**:下载winsw.exe和对应的XML配置文件。 3. **配置XML文件**:指定服务ID、名称、描述,以及执行命令(如java -jar yourjar.jar)。 4. **安装服务**:使用命令行工具安装服务。 5. **启动和管理服务**:通过服务管理器启动、停止服务。 详细步骤基于引用: - 从引用[3]:下载winsw,修改XML文件,将JAR放在同一目录。 - 从引用[4]:使用管理员权限运行命令安装服务。 回答大纲: 1. 介绍部署方法:使用winsw工具将JAR作为Windows服务运行。 2. 步骤: a. 下载winsw工具。 b. 准备文件:将winsw.exe、XML配置文件、JAR放在同一目录。 c. 配置XML文件:编辑文件以定义服务参数。 d. 安装服务:运行命令安装服务。 e. 启动服务:通过服务管理器或命令启动。 f. 卸载服务:如果需要。 3. 优点:服务在后台运行,不依赖命令提示符窗口。 4. 生成相关问题。 添加引用: - 在相关段落末尾添加[^1]、[^2]等,基于提供的引用内容。但用户提供的引用是示例,我需要引用它们。引用[1]到[4]是用户提供的,所以我应该在回答中引用它们,例如在描述步骤时。 例如: - 提到winsw工具时,引用[^1]。 - 提到打为exe时,引用[^2],但用户问题更关注直接部署,所以可能不重点强调。 - 配置XML时,引用[^3]。 - 安装命令时,引用[^4]。 确保回答真实可靠:基于引用内容,不添加虚假信息。 生成相关问题: - 在回答末尾,添加"相关问题"部分,类似示例。 - 问题应相关:如如何优化部署、如何处理依赖等。 完整回答结构: - 开头:简要介绍部署方法。 - 主体:逐步步骤。 - 结尾:相关问题。 使用中文。</think>### 在Windows环境下部署Java项目的JARWindows系统中部署Java项目的JAR,主要目的是实现JAR后台运行、开机自启和稳定性管理。最常见的方法是使用工具(如winsw)将JAR封装为Windows服务,这样即使关闭命令提示符窗口,服务也能持续运行。下面我将基于可靠引用,一步步指导您完成部署过程。整个过程简单易行,无需复杂编程。 #### 部署步骤 1. **下载准备winsw工具** winsw是一个轻量级工具,用于将任何可执行文件(如Java JAR)转换为Windows服务[^1]。 - 下载winsw:访问[GitHub winsw发布页](https://github.com/winsw/winsw/releases),选择最新版本(例如`WinSW-x64.exe`)。 - 创建部署目录:在您的Windows系统上新建一个文件夹(如`C:\MyJavaService`),将下载的`winsw.exe`文件复制到此目录。 - 添加JAR:将您的Java项目JAR文件(例如`myapp.jar`)也放入同一目录。 2. **配置XML服务文件** 在部署目录中创建一个XML配置文件,用于定义服务参数。此文件需与`winsw.exe`同名(如`MyJavaService.xml`)[^3]。 使用文本编辑器(如记事本)编辑该文件,内容示例如下: ```xml <service> <!-- 服务ID,必须唯一 --> <id>MyJavaApp</id> <!-- 服务显示名称 --> <name>My Java Application Service</name> <!-- 服务描述 --> <description>This service runs my Java JAR application.</description> <!-- 指定Java可执行路径(如果已配置环境变量,可直接用java) --> <executable>java</executable> <!-- 启动JAR的参数 --> <arguments>-jar myapp.jar</arguments> <!-- 日志模式,避免日志过大 --> <logmode>rotate</logmode> </service> ``` - 说明:`<executable>`标签指定Java路径(如果JDK已安装配置环境变量,直接写`java`即可;否则需写全路径如`C:\Program Files\Java\jdk-17\bin\java.exe`)。`<arguments>`标签指定JAR启动命令[^3]。 3. **安装Windows服务** 以管理员权限运行命令提示符或PowerShell,执行以下命令: - 进入部署目录: ```powershell cd C:\MyJavaService ``` - 安装服务(将`winsw.exe`重命名为与服务名一致,如`MyJavaService.exe`): ```powershell .\MyJavaService.exe install ``` 成功安装后,系统会提示服务已创建。您可以在“服务管理器”(运行`services.msc`)中查看服务状态,名称对应XML中的`<name>`[^4]。 4. **启动和管理服务** - 启动服务:在服务管理器中找到您的服务(如"My Java Application Service"),右键选择“启动”。或使用命令: ```powershell .\MyJavaService.exe start ``` - 停止服务:同样在服务管理器中操作,或运行: ```powershell .\MyJavaService.exe stop ``` - 卸载服务:如果需要移除服务,先停止服务,然后运行: ```powershell .\MyJavaService.exe uninstall ``` #### 优点和注意事项 - **优点**:服务化部署确保JAR后台运行,支持开机自启,且不依赖命令提示符窗口[^1]。适合生产环境如云服务器(Windows Server)。 - **依赖项**:确保系统已安装JDK或JRE,配置好环境变量(可通过运行`java -version`验证)。 - **错误排查**:如果服务启动失败,检查部署目录下的日志文件(如`MyJavaService.out.log`),通常能定位问题(如JAR路径错误或Java版本不兼容)[^3]。 - **备选方案**:如果需将JAR为EXE安装程序(便于用户一键安装),可使用exe4j和Inno Setup工具,但这会增加复杂度,适用于分发场景[^2]。 通过以上步骤,您的Java JAR即可作为Windows服务稳定运行。如果遇到问题,可参考winsw官方文档或社区支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值