核心准备工作:安装 Java 环境
JAR 文件需 Java 运行时环境(JRE)或开发工具包(JDK)才能运行:
-
检查现有 Java 版本:
java -version
若显示
"command not found"
或版本低于要求,需安装 Java。 -
安装 JDK/JRE(以 OpenJDK 为例):
- Ubuntu/Debian:
sudo apt update && sudo apt install openjdk-17-jdk # 推荐安装LTS版本(如11/17)
- CentOS/RHEL:
sudo yum install java-17-openjdk-devel
- 验证安装:
java -version # 输出应显示版本号
- Ubuntu/Debian:
运行 JAR 文件的三种方式
方式 1:直接运行(适用于带主类的 JAR)
java -jar /path/to/your-app.jar
- 关键参数:
-Dserver.port=8080
:指定端口(示例)-Xmx512m
:设置最大堆内存为 512MB
- 后台运行:
nohup java -jar your-app.jar > app.log 2>&1 &
> app.log
:输出重定向到日志文件&
:后台运行
方式 2:依赖外部库的 JAR
若 JAR 需外部 lib
目录:
java -cp your-app.jar:./lib/* com.example.MainClass
-cp
:指定类路径(含主类全限定名)
方式 3:作为系统服务运行(推荐生产环境)
通过 systemd
实现开机自启和进程管理:
-
创建服务文件:
sudo nano /etc/systemd/system/myapp.service
-
写入配置(示例):
[Unit] Description=My Java Application After=network.target [Service] User=appuser # 专用非root用户 WorkingDirectory=/opt/myapp ExecStart=/usr/bin/java -jar /opt/myapp/your-app.jar SuccessExitStatus=143 Restart=always RestartSec=30 [Install] WantedBy=multi-user.target
-
启用服务:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp # 开机自启
安全与权限最佳实践
- 避免使用 root 运行:
sudo useradd -r -s /bin/false appuser # 创建系统用户 sudo chown -R appuser:appuser /opt/myapp
- 文件权限控制:
chmod 500 your-app.jar # 只允许所有者执行 chmod 400 config.conf # 配置文件仅可读
- 防火墙配置:
sudo ufw allow 8080/tcp # 开放应用端口
常见问题排查
问题现象 | 解决方案 |
---|---|
UnsupportedClassVersionError |
升级 JDK 版本匹配编译环境 |
No main manifest attribute |
重新打包并指定主类:jar cfe app.jar MainClass *.class |
端口冲突 | netstat -tulnp | grep :8080 查找占用进程 |
内存不足 | 调整 JVM 参数:-Xmx2G -XX:+UseG1GC |
高级管理技巧
- 日志收集:使用
journalctl
查看 systemd 日志:journalctl -u myapp.service -f
- 环境变量配置:在
systemd
的[Service]
部分添加:Environment="DB_URL=jdbc:mysql://localhost/db"
- 多版本 Java 管理:通过
update-alternatives
切换版本:sudo update-alternatives --config java
在 Linux 中运行 JAR 文件的核心步骤为:安装匹配的 JDK → 通过 java -jar
或 systemd
启动 → 配置权限和日志,生产环境务必遵循:
- 使用非 root 用户运行
- 通过 systemd 托管进程
- 定期更新 Java 安全补丁
引用说明:本文操作基于 OpenJDK 官方文档、Linux Systemd 手册及 Oracle JVM 安全指南,具体参数请参考:
- OpenJDK 安装指南
- Systemd 服务配置
- Oracle JVM 参数说明
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8920.html