作为一名Java开发者或DevOps工程师,部署应用是我们最日常的工作之一。

经过前面的构建流程,我们已经得到了一个包含所有依赖的可运行Jar包。这个Jar包被存储在制品仓库中,现在我们需要把它部署到服务器上,让用户能够访问。

那么问题来了:拿到Jar包之后,怎么把它跑起来?

今天这篇文章,我们就来讲解Java应用部署最核心、最基础的命令:java -jar

一、部署前置准备:服务器需要什么?

在运行Jar包之前,目标服务器需要满足一个最基本的条件:

必须安装Java运行环境(JRE)或Java开发工具包(JDK)。

因为Jar包里的内容是Java字节码,不是机器可以直接执行的二进制代码。Java虚拟机(JVM)负责解释执行这些字节码。

可以通过以下命令验证服务器是否已安装Java:

java -version

如果输出了Java版本信息,说明环境已经就绪。如果没有,需要先安装JDK或JRE。

二、核心命令:java -jar

当服务器环境准备就绪,Jar包也已经上传到服务器后,启动应用只需要一行命令:

java -jar <Jar包文件名>

示例:

假设你的Jar包名为myapp-1.0.0.jar,那么启动命令就是:

java -jar myapp-1.0.0.jar

执行后,你会看到应用启动的日志输出。如果是一个Spring Boot应用,你会看到Spring的Logo和启动信息,最后显示类似Started Application in X seconds的提示,说明应用已经成功运行。

三、命令详解:java -jar 做了什么?

java -jar命令的作用是:

  1. 启动Java虚拟机(JVM)

  2. 找到Jar包中指定的主类(在META-INF/MANIFEST.MF文件中通过Main-Class属性指定)

  3. 加载Jar包中的所有类和依赖

  4. 执行main方法,启动应用

这行命令的背后,Java虚拟机会自动处理类路径(classpath),无需手动指定依赖——因为所有依赖都已经打包在Jar包里了。

这正是Java“一次编写,到处运行”理念的体现:只要服务器有Java环境,同一个Jar包可以在任何操作系统上直接运行。

四、实际部署场景中的注意事项

在实际生产环境中,直接运行java -jar通常不够,还需要考虑:

1. 后台运行

直接用java -jar启动,当终端关闭时应用也会停止。生产环境需要让应用在后台持续运行:

nohup java -jar myapp-1.0.0.jar > app.log 2>&1 &

2. 指定JVM参数

可以根据服务器配置调整内存等参数:

java -Xms512m -Xmx1024m -jar myapp-1.0.0.jar

3. 指定配置文件

Spring Boot应用可以通过--spring.config.location指定外部配置文件:

java -jar myapp-1.0.0.jar --spring.config.location=/path/to/application.yml

4. 使用系统服务

更规范的做法是将Java应用注册为系统服务(systemd),实现开机自启、自动重启等功能。

五、部署流程总结

一个完整的Java应用部署流程可以概括为:

  1. 构建:使用Maven/Gradle构建项目,生成可执行Jar包

  2. 存储:将Jar包上传到制品仓库(如Nexus、Artifactory)

  3. 分发:从制品仓库下载Jar包到目标服务器

  4. 准备:确保服务器已安装Java环境

  5. 启动:执行java -jar命令运行应用

  6. 验证:检查应用日志,确认服务正常启动

最简部署流程(全新服务器):

# 1. 安装Java
sudo apt install openjdk-17-jre  # Ubuntu/Debian
# 或
sudo yum install java-17-openjdk  # CentOS/RHEL

# 2. 下载Jar包
wget http://nexus-server/repo/myapp-1.0.0.jar

# 3. 启动应用
java -jar myapp-1.0.0.jar
六、常见问题排查

Q1: 提示“无法找到或加载主类”

检查Jar包是否是可执行的。用以下命令查看MANIFEST.MF:

jar tf myapp-1.0.0.jar | grep MANIFEST
jar xf myapp-1.0.0.jar META-INF/MANIFEST.MF
cat META-INF/MANIFEST.MF

确保有Main-Class属性。

Q2: 提示“端口已被占用”

应用默认端口可能被其他进程占用。修改配置文件中的端口,或者杀掉占用端口的进程。

Q3: 应用启动后立即退出

查看日志输出,通常是配置错误或依赖缺失。确保所有必要的配置(如数据库连接)都正确。

七、总结
步骤 操作 说明
1 java -version 确认服务器已安装Java环境
2 wget/curl 下载Jar 从制品仓库获取应用制品
3 java -jar app.jar 启动应用
4 查看日志 确认应用正常运行

java -jar是Java应用部署的基石。掌握了这行命令,你就掌握了Java应用从构建到运行的最后一步。

无论你是用Maven还是Gradle,无论你的项目有多复杂,最终交付给服务器的,都是一个Jar包。而让它跑起来的,就是这行简单的命令。

希望这篇文章对你有帮助!如果你对生产环境部署、容器化部署等进阶话题感兴趣,欢迎留言交流。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐