将Java程序打包并部署到 Windows Server 上的 Tomcat 服务器 是一个常见的 Web 应用部署流程。以下是详细步骤:
✅ 前提条件
- Java 程序是基于 Servlet/JSP 的 Web 应用(如使用 Spring MVC、Spring Boot 等)
- 已安装并配置好 JDK(建议 JDK 8 或以上)
- 已下载并安装 Apache Tomcat(建议版本 8.5 / 9 / 10)
- Windows Server 上有管理员权限
- Java 程序使用 Maven 或 Gradle 构建(推荐)
🔧 步骤一:将 Java 程序打包成 WAR 文件
如果使用 Maven
在项目根目录下执行命令:
mvn clean package
打包完成后,会在 target/ 目录生成一个 .war 文件,例如:
myapp.war
⚠️ 注意:确保
pom.xml中<packaging>设置为war:<packaging>war</packaging>
如果使用 Gradle
执行命令:
gradle clean build
生成的 WAR 文件位于 build/libs/ 目录下。
📦 步骤二:将 WAR 文件复制到 Tomcat 的 webapps 目录
- 登录你的 Windows Server
- 找到 Tomcat 安装目录,通常路径类似:
C:apache-tomcat-9.0.xxwebapps - 将生成的
myapp.war文件复制到该目录下。
✅ Tomcat 会自动解压 WAR 文件并创建同名文件夹(如
myapp/)
🔁 步骤三:启动或重启 Tomcat 服务
方法一:使用 startup.bat 启动
进入 Tomcat 的 bin 目录:
cd C:apache-tomcat-9.0.xxbin
startup.bat
这将在控制台运行 Tomcat,便于查看日志。
方法二:以 Windows 服务方式运行(推荐生产环境)
如果你已将 Tomcat 安装为 Windows 服务:
- 打开“服务”管理器(
services.msc) - 找到服务名为
Tomcat9(具体名称可能不同) - 右键选择“重新启动”
💡 首次安装后可运行
service.bat install将 Tomcat 注册为服务(需管理员权限)
🌐 步骤四:访问应用
等待 Tomcat 启动完成(查看日志确认无错),然后在浏览器中访问:
http://<服务器IP>:8080/myapp
8080是 Tomcat 默认端口(可在conf/server.xml修改)myapp是 WAR 文件名(不含.war后缀)
🛠️ 常见问题排查
| 问题 | 解决方法 |
|---|---|
| 访问显示 404 | 检查 WAR 是否成功解压,检查应用上下文路径 |
| 启动报错 ClassNotFoundException | 检查 WEB-INF/lib 是否包含所有依赖 JAR |
| 数据库连接失败 | 检查 application.properties 或 context.xml 中数据库配置 |
| 中文乱码 | 在 Tomcat 的 server.xml 中设置 URIEncoding=”UTF-8″ |
| 内存溢出 | 修改 bin/catalina.bat,添加 JVM 参数,如 -Xms512m -Xmx1024m |
✅ 附加建议(生产环境)
-
修改默认端口和关闭 SHUTDOWN 端口
- 编辑
conf/server.xml,修改<Server port="8005">为 -1(禁用关闭端口) - 修改 HTTP 端口从 8080 到 80(需管理员权限)
- 编辑
-
配置 context.xml 防止资源泄漏
- 在
conf/context.xml中启用防泄漏功能
- 在
-
使用反向X_X(如 Nginx/IIS)
- 将 80/443 端口请求转发给 Tomcat,提升安全性和性能
-
设置应用上下文为 ROOT
- 若希望访问
http://ip/直接进入应用:- 删除
webapps/ROOT目录 - 将你的 WAR 改名为
ROOT.war并放入webapps
- 删除
- 若希望访问
📝 示例:Spring Boot 项目打包为 WAR
- 修改
pom.xml:
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
- 主类继承
SpringBootServletInitializer:
@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MyApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
✅ 完成!现在你的 Java Web 应用已在 Windows Server 的 Tomcat 上成功部署。
如有更多细节(如使用 HTTPS、集群部署等),欢迎继续提问!
云小栈