如何让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/n/334894.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
QDSUHQDSUH
上一篇 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

发表回复

登录后才能评论