当前位置:首页 > 行业动态 > 正文

服务器上运行jar

在服务器上运行 .jar 文件,通常需要先通过 SSH 连接到 服务器,然后在命令行中使用 java -jar yourfile.jar 命令来启动该 .jar 文件。

在服务器上运行JAR文件通常涉及以下几个步骤:

一、准备工作

1、确认Java环境

首先需要确保服务器上已经安装了合适版本的Java运行时环境(JRE)或Java开发工具包(JDK),可以通过以下命令检查Java版本:

 java -version

如果未安装Java,需要根据服务器的操作系统下载并安装相应版本的Java,在Ubuntu系统上可以使用以下命令安装OpenJDK:

 sudo apt update
    sudo apt install default-jre

2、上传JAR文件

将本地开发好的JAR文件通过FTP、SCP或其他文件传输方式上传到服务器的指定目录,使用SCP命令从本地计算机上传JAR文件到服务器:

 scp /path/to/local/yourfile.jar username@server_ip:/path/to/server/directory/

二、运行JAR文件

1、简单运行JAR文件

进入JAR文件所在的目录,然后使用以下命令运行JAR文件:

 java -jar yourfile.jar

这种运行方式适用于简单的JAR应用程序,它会在当前终端会话中启动并在该会话结束时停止。

2、后台运行JAR文件

如果希望JAR文件在后台持续运行,即使终端会话关闭也不受影响,可以使用以下方法:

使用&符号

在运行命令的末尾添加&符号,如:

 java -jar yourfile.jar &

运行后,系统会返回一个进程ID(PID),可以通过该PID对进程进行管理,使用ps命令查看正在运行的Java进程:

服务器上运行jar

 ps -ef | grep yourfile.jar

要停止该进程,可以使用kill命令,结合ps命令获取的PID:

 kill PID

使用nohup命令

nohup(no hang up)命令可以在不挂断终端的情况下运行命令,使用方法如下:

 nohup java -jar yourfile.jar &

执行该命令后,输出会被重定向到一个名为nohup.out的文件中,可以在该文件中查看程序的输出信息,程序会在后台独立运行。

3、设置JAR文件为系统服务(以Systemd为例)

对于一些需要长期稳定运行且需要在系统启动时自动启动的JAR应用程序,可以将其设置为系统服务,以下是在基于Systemd的Linux系统上的操作步骤:

创建服务单元文件

/etc/systemd/system/目录下创建一个服务单元文件,例如myjar.service如下:

 [Unit]
            Description=My Java Application
            After=network.target
            [Service]
            Type=simple
            ExecStart=/usr/bin/java -jar /path/to/yourfile.jar
            Restart=always
            User=yourusername
            WorkingDirectory=/path/to/
            [Install]
            WantedBy=multi-user.target

ExecStart指定了启动JAR文件的命令,Restart=always表示当服务异常停止时自动重启,UserWorkingDirectory分别指定了运行该服务的用户和工作目录。

重新加载Systemd管理器配置

服务器上运行jar

使新创建的服务单元文件生效:

 sudo systemctl daemon-reload

启动、停止和管理服务

启动服务:

 sudo systemctl start myjar.service

停止服务:

 sudo systemctl stop myjar.service

查看服务状态:

 sudo systemctl status myjar.service

设置服务开机自启:

 sudo systemctl enable myjar.service

三、常见问题及解决方法

1、JAR文件无法运行,提示“找不到主类”错误

原因分析:可能是JAR文件中没有正确指定主类,或者主类所在的包路径不正确,也可能是在打包JAR文件时遗漏了某些依赖库。

解决方法:检查JAR文件中的MANIFEST.MF文件,确保其中的Main-Class属性正确指向了主类,确认所有必要的依赖库都已包含在JAR文件中,如果问题仍然存在,可以尝试重新编译和打包项目。

2、JAR文件运行时出现“OutOfMemoryError”错误

服务器上运行jar

原因分析:这是由于JVM默认分配的内存不足以满足应用程序的需求,可能在运行过程中创建了大量的对象,导致内存耗尽。

解决方法:可以通过调整JVM的启动参数来增加内存分配,使用以下命令增加堆内存大小:

 java -Xmx512m -jar yourfile.jar

-Xmx512m表示将最大堆内存设置为512MB,根据应用程序的实际需求,可以适当调整这个值。

FAQs

问题1:如何在服务器上查看正在运行的JAR进程的详细信息?

答:可以使用jps -l命令查看正在运行的Java进程的详细信息,包括进程ID、主类名称等。

jps -l | grep yourfile.jar

这将列出与指定JAR文件相关的Java进程的详细信息。

问题2:如何知道JAR文件是否成功启动?

答:可以通过查看控制台输出或者日志文件来判断JAR文件是否成功启动,如果JAR文件中有打印启动信息的代码,那么在启动成功后,这些信息会出现在控制台或日志文件中,如果设置了后台运行并且没有出现错误提示,也可以初步判断JAR文件已成功启动,还可以通过检查相关服务的状态(如果是作为服务运行)来确定其是否正常运行。

小编有话说

在服务器上运行JAR文件需要根据具体的需求和服务器环境选择合适的运行方式,无论是简单的后台运行还是设置为系统服务,都要确保正确配置相关参数,以保证JAR应用程序的稳定运行,在遇到问题时,要仔细分析错误信息,采取有效的解决方法,这样才能充分发挥JAR文件在服务器端的作用,为各种应用提供稳定的支持。