在 Linux 系统中运行 JAR 包主要有以下几种方式,以下是详细步骤和注意事项:
java -jar your-application.jar
java -version 检查)。MANIFEST.MF 并指定了 Main-Class)。java -Xms256m -Xmx1024m -jar your-application.jar
-Xms:初始堆内存-Xmx:最大堆内存-Dproperty=value 可设置系统属性。nohup java -jar your-application.jar > /dev/null 2>&1 &
nohup 防止进程因终端关闭而终止。> /dev/null 2>&1 丢弃所有输出(日志可重定向到文件,如 > app.log)。& 表示后台运行。bash
ps -ef | grep java/path/to/specific/jdk/bin/java -jar your-application.jar
若JAR依赖外部库(如 lib/ 目录):
java -jar -Djava.ext.dirs=/path/to/libs your-application.jar
或使用 -cp 参数:
java -cp your-application.jar:/path/to/libs/* com.example.MainClass
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar your-application.jar
若JAR无执行权限:
chmod +x your-application.jar
(通常JAR不需要执行权限,但某些场景可能需要)
no main manifest attribute
bash
java -cp your-application.jar com.example.MainClass内存不足
-Xmx)。端口冲突
bash
netstat -tulnp | grep <port>依赖缺失
-cp 或 java.ext.dirs 中指定。start.sh)。服务化:通过 systemd 管理(示例单元文件 /etc/systemd/system/myapp.service):
[Unit]
Description=My Java App
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/java -jar /path/to/your-application.jar
User=appuser
Restart=always
[Install]
WantedBy=multi-user.target
操作命令:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp # 开机自启
根据实际需求选择合适的方式,生产环境建议使用 systemd 或容器化(如Docker)管理。