持续创作,加速成长!这是我参与「掘金日新计划 · 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):
-
jar 包同级目录下的 config 目录下的配置文件
-
jar 包同目录下的 application.properties 文件
-
classpath 里的 config 目录下的配置文件
-
classpath 目录下的配置文件
如果不使用默认的配置文件,还可以在 java -jar 命令中使用参数指定要读取的 application.properties 文件位置
java -jar demo.jar -Dspring.config.location=config/application.properties
2.2 指定其他参数
除了指定读取配置文件外,java -jar 命令还可以后跟其他自定义参数信息
-
如果是少量配置,或可选择的配置,可以在使用 java -jar 命令时指定对应配置对应的值,如设置端口号:
java -jar demo.jar --server.port=7051 -
启动参数修改加载配置文件的位置(指定多个配置文件),
java -jar demo.jar --spring.config.location=classpath:/dev1.properties,classpath:/dev2.properties -
启动参数配置服务环境,
java -jar demo.jar --spring.profile.active=prod -
多个参数可以同时指定
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 命令使用示例
-
java -jar demo.jar ,运行 jar 包,在命令行输出内容,关闭命令行则程序退出,可以用 ctrl+C 主动退出
-
java -jar demo.jar & ,使用 & 代表后台运行 jar 包,不影响当前命令行的继续使用,关闭命令行时退出程序
-
nohup java -jar demo.jar & ,使用 nohup 表示不挂断运行命令,即程序可以后台运行,不影响命令行继续使用,且关闭命令行后程序不停止;nohup 不指定输出文件时,默认将命令行输出重定向到 nohup.out 文件
-
nohup java -jar demo.jar > out.log & ,在 3 的基础上,自定义输出文件