环境
- 操作系统: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 参数 |
|