如何讓Jar包在後台運行?

一、前言

Jar包作為Java語言的一種標準分發格式,已經成為了Java應用程序的主流分發形式。Java程序運行時需要依賴Java虛擬機JVM,而使用Jar包可以將Java類、資源和依賴庫打包到一個文件中,並直接在JVM中運行。

在實際應用場景中,我們常常需要使用Java程序作為後台服務運行,而不是依賴用戶的交互操作啟動。本文將介紹如何讓Jar包在後台運行,以便滿足這種應用場景的需求。

二、使用命令行啟動Jar包

Java虛擬機JVM提供了命令行啟動Jar包的方式。我們可以通過JAVA_HOME環境變量找到JVM的根目錄,進入bin目錄下,使用Java命令啟動指定的Jar包。

$ cd $JAVA_HOME/bin
$ java -jar path/to/your/jar/file.jar

其中path/to/your/jar/file.jar需要替換成實際的Jar包文件路徑。

在Linux系統中,我們可以使用nohup命令將進程轉入後台運行,以避免進程被關閉。

$ nohup java -jar path/to/your/jar/file.jar > log.file 2>&1 &

這裡將Java命令放在nohup命令後,使用>符號將輸出流導入log.file中,使用2>&1將錯誤流導入標準輸出流。最後加上&符號將進程轉入後台運行。

這種方式雖然簡單易行,但是缺乏進程管理和自動重啟機制,應用在生產環境下還需要一些增強措施。

三、使用Systemd配置Jar包後台服務

Systemd是Linux系統下的服務管理器,可以方便地管理系統服務並自動重啟崩潰的服務。我們可以使用Systemd來配置Jar包後台服務。

首先,創建一個.service文件,使用systemctl enable命令將文件註冊到Systemd。

$ sudo vi /etc/systemd/system/myproject.service

在myproject.service文件中編寫如下內容:

[Unit]
Description=My project Jar service
After=syslog.target

[Service]
User=yourusername
ExecStart=/usr/bin/java -jar /path/to/your/jar/file.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

其中yourusername需要替換成實際的用戶名,/path/to/your/jar/file.jar需要替換成實際的Jar包文件路徑。

在Service節中設置ExecStart屬性值為Java命令加上Jar包路徑,SuccessExitStatus屬性設為143,表示服務關閉時返回狀態碼為143。這是因為Java程序停止時要發送SIGTERM信號,而143是SIGTERM信號的標準值。

配置完成後,執行systemctl daemon-reload重新載入配置文件,再使用systemctl start myproject命令啟動服務即可。

四、使用Supervisor管理Jar包進程

Supervisor是一個Python編寫的進程管理程序,可以自動啟動、重啟和停止進程。我們可以使用Supervisor來管理Java程序作為後台服務運行。

首先需要安裝和啟動Supervisor。

$ sudo apt install supervisor
$ sudo service supervisor start

然後,創建一個.conf配置文件在/etc/supervisor/conf.d/目錄下,使用supervisorctl reread和supervisorctl update命令重新加載配置文件,並使用supervisorctl start myproject命令啟動進程。

$ sudo vi /etc/supervisor/conf.d/myproject.conf

在myproject.conf文件中編寫如下內容:

[program:myproject]
command=/usr/bin/java -jar /path/to/your/jar/file.jar
user=yourusername
directory=/path/to/your/project/directory
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/myproject.log
stderr_logfile=/var/log/myproject.err

其中yourusername需要替換成實際的用戶名,/path/to/your/jar/file.jar需要替換成實際的Jar包文件路徑,/path/to/your/project/directory需要替換成實際的項目路徑。

在program節中設置command屬性為Java命令加上Jar包路徑,設置user屬性為實際的用戶名,設置directory屬性為實際的項目路徑,設置autorestart屬性為true即可自動重啟進程。

stderr_logfile和stdout_logfile分別用於保存錯誤和輸出流。

五、總結

本文介紹了四種方法來讓Jar包在後台運行:使用命令行啟動Jar包、使用Systemd配置Jar包後台服務、使用Supervisor管理Jar包進程。每種方法都有其適用的場景和優劣勢,需要根據具體需求來選擇合適的方案。

原創文章,作者:QDSUH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/334894.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QDSUH的頭像QDSUH
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:05

相關推薦

  • Spring調用超時,後台還在運行的解決方法

    本篇文章將從以下幾個方面詳細介紹Spring調用超時,後台還在運行的解決方法: 一、設置超時時間 通過設置超時時間可以確保Spring調用在一定時間內返回結果並結束,避免出現後台還…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • Maven打Jar包

    一、Eclipse Plugin中的Maven打Jar包 Eclipse是Java開發人員廣泛使用的集成開發環境(IDE),因此,我們首先來探討在Eclipse中如何使用Maven…

    編程 2025-04-24
  • Framework.jar的詳細闡述

    一、介紹 Framework.jar是一種用於Java應用程序開發的框架,可以方便地處理Java應用程序的各種任務。該框架提供了一系列的工具和庫,使得Java應用程序開發更加簡單、…

    編程 2025-04-24
  • 從多個方面詳細解析如何啟動jar包

    一、環境準備 在啟動jar包之前,需要進行環境的準備。首先需要安裝JDK,安裝完JDK之後,需要設置JAVA_HOME系統變量。在Windows系統中,需要在系統環境變量中添加JA…

    編程 2025-04-24
  • 使用ojdbc7.jar進行Java開發

    一、概述 ojdbc7.jar是Oracle公司提供的Java JDBC驅動程序,它是連接Java應用程序和Oracle數據庫的橋樑。使用ojdbc7.jar可以方便地進行數據庫操…

    編程 2025-04-23
  • 後台啟動Redis

    一、Redis簡介 Redis是一款開源的,高性能的NoSQL內存數據庫。它支持多種數據結構,如字符串、哈希、列表、集合等。除了內存存儲,Redis還支持數據持久化,可將內存中的數…

    編程 2025-04-18
  • Druid.jar詳解

    一、Druid概述 Druid是一種數據庫連接池和監控工具,由阿里巴巴發布。Druid基於JDBC規範構建,可以提供高效、可靠、可擴展性和安全的數據訪問服務,可以滿足日常的數據訪問…

    編程 2025-04-18
  • 深入解析orai18n.jar

    一、orai18n.jar中英文轉換 //樣例代碼 String zhText = “謝謝”; String enText = OraI18nTrans.translate(“zh…

    編程 2025-04-12
  • Java -jar 指定內存

    一、Java -jar 簡介 Java -jar 命令是指在命令行下執行一個制定的.jar文件, 這個文件將作為一個應用程序執行,而且必須是可運行的。 Java -jar 命令的一…

    編程 2025-04-12

發表回復

登錄後才能評論