java -jar 命令的使用

3,197 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

1. java -jar 命令

java -jar 命令是 Java 程序提供的启动 .jar 文件的命令,对于 Java 类型的项目,可以将其打包为 jar 包,然后使用命令启动服务。

  • java -jar demo.jar ,启动 demo 服务

jar 包对应的服务启动时会默认读取同目录下的 application.properties 文件,如果在项目中设置配置文件不打入 jar 包,然后进入 jar 打包目录使用命令启动,则会因为读取不到配置文件内容而报错。

此时可以将配置文件 application.properties 移动到 jar 包同目录下,便可正常运行。

2. java -jar 命令指定参数

2.1 指定读取配置文件

java -jar 命令启动服务时,默认读取配置文件的位置有(properties/yml):

  1. jar 包同级目录下的 config 目录下的配置文件

  2. jar 包同目录下的 application.properties 文件

  3. classpath 里的 config 目录下的配置文件

  4. classpath 目录下的配置文件

如果不使用默认的配置文件,还可以在 java -jar 命令中使用参数指定要读取的 application.properties 文件位置

  1. java -jar demo.jar -Dspring.config.location=config/application.properties

2.2 指定其他参数

除了指定读取配置文件外,java -jar 命令还可以后跟其他自定义参数信息

  1. 如果是少量配置,或可选择的配置,可以在使用 java -jar 命令时指定对应配置对应的值,如设置端口号: java -jar demo.jar --server.port=7051

  2. 启动参数修改加载配置文件的位置(指定多个配置文件),java -jar demo.jar --spring.config.location=classpath:/dev1.properties,classpath:/dev2.properties

  3. 启动参数配置服务环境, java -jar demo.jar --spring.profile.active=prod

  4. 多个参数可以同时指定

3. java -jar 命令后台执行

Linux 系统中提供了 nohup 命令运行程序在后台运行,不影响其他操作的正常进行。

使用 nohup 命令后台执行 java -jar 命令示例:

nohup jdk1.8.0_131/bin/java -jar -Dspring.config.location=tmp/xxx.yaml tmp/demo.jar --spring.profiles.active=test > logs/xxxlog.log 2>&1 &

命令内容含义

  • nohup,表示不挂断运行命令,当终端关闭时程序依然进行

  • jdk1.8.0_131/bin/java,指定使用的 java 命令,可以自定义 jdk 版本

  • -jar,即 java 中的 -jar 命令选项

  • -Dspring.config.location=...,指定运行时读取配置文件的绝对路径

  • --spring.profiles.active=...,指定运行时环境参数值

  • >,重定向,command > file.log 表示将命令行输出内容重定向到 file.log 文件中

  • > /dev/null,linux 中提供了该路径,代表无底洞,所有重定向当前位置的内容表示不记录

  • 2>&1,shell 中,0表示标注输入,1表示标准输出,2表示标准错误,&代表等同于,因此 2>&1 代表标准错误重定向到标准输出中

  • 错误输出到指定文件:2>error.log

  • 则错误不记录可以表示为: > /dev/null 2>&1

  • &,最后一个 & 符号代表 -jar 命令在后台执行

4. java -jar 命令使用示例

  1. java -jar demo.jar ,运行 jar 包,在命令行输出内容,关闭命令行则程序退出,可以用 ctrl+C 主动退出

  2. java -jar demo.jar & ,使用 & 代表后台运行 jar 包,不影响当前命令行的继续使用,关闭命令行时退出程序

  3. nohup java -jar demo.jar & ,使用 nohup 表示不挂断运行命令,即程序可以后台运行,不影响命令行继续使用,且关闭命令行后程序不停止;nohup 不指定输出文件时,默认将命令行输出重定向到 nohup.out 文件

  4. nohup java -jar demo.jar > out.log & ,在 3 的基础上,自定义输出文件