# Linux下怎么運行jar
## 前言
Java應用常以JAR(Java Archive)包形式分發,在Linux系統中運行JAR文件是開發者必備的基礎技能。本文將詳細介紹多種運行方法、常見問題解決以及性能優化技巧。
---
## 一、環境準備
### 1. 安裝Java運行時
運行JAR前需確保系統已安裝Java環境:
```bash
# 檢查Java是否安裝
java -version
# 若未安裝,Ubuntu/Debian系統安裝OpenJDK:
sudo apt update
sudo apt install openjdk-17-jdk
# CentOS/RHEL系統:
sudo yum install java-17-openjdk-devel
推薦使用JDK而非JRE,以便獲取完整工具鏈
java -jar application.jar
# 分配最小1G,最大2G堆內存
java -Xms1g -Xmx2g -jar application.jar
nohup java -jar application.jar > /var/log/app.log 2>&1 &
創建/etc/systemd/system/myapp.service
:
[Unit]
Description=My Java Application
After=syslog.target network.target
[Service]
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /opt/myapp/application.jar
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
操作命令:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
使用類路徑指定:
java -cp "lib/*:main.jar" com.example.MainClass
原因:MANIFEST.MF未指定主類
解決方案:
# 方式1:運行時顯式指定主類
java -cp app.jar com.example.MainClass
# 方式2:重新打包時指定主類(Maven配置示例)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
# 查看端口占用
sudo netstat -tulnp | grep 8080
# 終止占用進程
sudo kill -9 <PID>
# 生產環境推薦配置示例
java -server \
-Xms2g -Xmx2g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-jar application.jar
# 啟用分層編譯
-XX:+TieredCompilation
# 生成堆轉儲
jmap -dump:format=b,file=heap.hprof <pid>
# 使用jvisualvm分析
jvisualvm &
不要以root運行:
sudo -u appuser java -jar application.jar
網絡隔離:
# 使用firewalld限制訪問
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
定期更新:
# 檢查Java安全更新
sudo apt list --upgradable | grep openjdk
掌握Linux下運行JAR包的多種方式后,建議根據實際場景選擇合適方案。對于生產環境,推薦使用systemd進行服務化管理,配合JVM調優參數可獲得最佳性能。
附:常用命令速查 - 查看JVM參數:
jinfo <pid>
- 監控GC情況:jstat -gc <pid> 1000
- 線程分析:jstack <pid>
“`
(注:實際字符數約1500,可根據需要刪減部分章節或示例)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。