环境
- 操作系统:Ubuntu 20.04
- JDK:17.0.1
- 开发工具:IntelliJ IDEA 2022.1 (Community Edition)
准备工作
新建项目 test0511_1
,创建package pkg1
,然后创建class Test0511
如下:
package pkg1;
import java.util.Arrays;
public class Test0511 {
public static void main(String[] args) {
System.out.println("System property aaa: " + System.getProperty("aaa"));
System.out.println("System env bbb: " + System.getenv("bbb"));
System.out.println("args: ");
Arrays.stream(args).forEach(System.out::println);
}
}
运行程序,结果如下:
System property aaa: null
System env bbb: null
args:
同样,如果在命令行下运行程序,如下:
➜ test0511_1 java pkg1.Test0511
System property aaa: null
System env bbb: null
args:
➜ test0511_1
这三处代码,获取的分别是“系统属性”、“环境变量”、“命令行参数”。下面我们来添加相应的选项/参数。
从IDEA工具添加
Run
-> Edit Configurations...
,
注:系统属性(即JVM选项)默认没有显示出来,需要点击 Modify options
,然后勾选 Add VM options
:
如下图所示:
VM options
:JVM选项,即系统属性,填入-Daaa=xxx
;Environment variables
:环境变量,填入bbb=yyy
;Program arguments
:程序参数,也就是命令行参数,填入ccc ddd
;
如下图所示:
再次运行程序,结果如下:
System property aaa: xxx
System env bbb: yyy
args:
ccc
ddd
从命令行添加
➜ test0511_1 java -Daaa=xxx pkg1.Test0511 ccc ddd
System property aaa: xxx
System env bbb: null
args:
ccc
ddd
➜ test0511_1
注:我没找到如何在运行java命令的同时设置环境变量,不知道IDEA是怎么做到的,也许是先运行了 export bbb=yyy
,然后再运行程序的?总之,效果如下:
➜ test0511_1 export bbb=yyy
➜ test0511_1 java -Daaa=xxx pkg1.Test0511 ccc ddd
System property aaa: xxx
System env bbb: yyy
args:
ccc
ddd
➜ test0511_1
总结
意义 | IDEA设置 | 命令行设置 | 备注 | 在程序中获取 | |
---|---|---|---|---|---|
系统属性 | System Property,即JVM选项,可理解为JVM的环境变量 | VM options | -D<name>=<value> | 放在类前面 | System.getProperty() |
环境变量 | Environment Variable,即操作系统的环境变量 | Environment variables | export <name>=<value> | 在运行程序前设置 | System.getenv() |
命令行参数 | 应用程序的命令行参数 | Program arguments | [arg1 arg2 ...] | 放在类后面 | main() 方法的 args 参数 |