Idea中的VM Options、Program Arguments、Environment Variable全解析

在这里插入图片描述

参数使用方式示例代码获取方式
VM Options必须以-D 、 -X 、 -XX 开头,每个参数用空格隔开-Dvm.key=VmKey -Dvm.key2=VmKey2String key = System.getProperty(“vm.key”);
Program Arguments每个参数用空格隔开p.key=Program_Key p.name=ProgramName p.age=18main(String[] args)
Environment Variable其优先级低于 VM options ,即如果VM options 有一个变量和 Environment variable中的变量的key相同,则以VM options 中为准, 以分号分割多个env.key=env_james;server.servlet.context-path=/test;server.port=8080String envKey = System.getenv(“env.key”);

Java中提供的System类中的静态方法getProperty(), getenv , 用来返回相对应的配置值
System.getenv

获取环境变量的值

System.getProperty

获取包括操作系统用户名、名称、区域德国信息, 文件编码等信息

代码测试:
在这里插入图片描述

@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
        System.out.println("***************args***************");
        //打印传进来的 program arguments
        for (String arg : args) {
            System.out.println(arg);
        }
        System.out.println("***************System.getProperties***************");
        //获取java相关的环境变量
        String key = System.getProperty("vm.key");
        System.out.println("System.getProperties(vm.key):=======>" + key);
        Properties properties = System.getProperties();
        System.out.println("System.getProperties():=======>" + properties);
        System.out.println("***************System.getenv***************");
        //获取运行jvm的平台相关环境变量
        Map<String, String> env = System.getenv();
        System.out.println("System.getenv():----->" + env);
        String envKey = System.getenv("env.key");
        System.out.println("System.getenv(env.key)=======>" + envKey);
    }
}

测试结果:

***************args***************
p.key=Program_Key
p.name=ProgramName
p.age=18
***************System.getProperties***************
System.getProperties(vm.key):=======>VmKey
System.getProperties():=======>{sun.desktop=windows, awt.toolkit=sun.awt.windows.WToolkit, java.specification.version=11, sun.cpu.isalist=amd64, sun.jnu.encoding=GBK, java.vm.vendor=Amazon.com Inc., sun.arch.data.model=64, user.variant=, java.vendor.url=https://aws.amazon.com/corretto/, catalina.useNaming=false, user.timezone=Asia/Shanghai, os.name=Windows 10, java.vm.specification.version=11, sun.java.launcher=SUN_STANDARD, user.country=CN, spring.application.admin.enabled=true, sun.java.command=com.james.springbootdemo.SpringbootDemoApplication p.key=Program_Key p.name=ProgramName p.age=18, com.sun.management.jmxremote=, jdk.debug=release, sun.cpu.endian=little, spring.liveBeansView.mbeanDomain=, user.home=C:\Users\Andy, user.language=zh, java.specification.vendor=Oracle Corporation, java.version.date=2020-10-20, java.home=D:\jdk\jdk11.0.9_11, file.separator=\, spring.output.ansi.enabled=always, java.vm.compressedOopsMode=Zero based, line.separator=
, java.specification.name=Java Platform API Specification, java.vm.specification.vendor=Oracle Corporation, FILE_LOG_CHARSET=UTF-8, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.awt.headless=true, user.script=, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, java.runtime.version=11.0.9+11-LTS, user.name=James, path.separator=;, os.version=10.0, java.runtime.name=OpenJDK Runtime Environment, file.encoding=UTF-8, spring.beaninfo.ignore=true, java.vm.name=OpenJDK 64-Bit Server VM, vm.key=VmKey, java.vendor.version=Corretto-11.0.9.11.2, java.version=11.0.9, os.arch=amd64, java.vm.specification.name=Java Virtual Machine Specification, PID=15712, java.awt.printerjob=sun.awt.windows.WPrinterJob, sun.os.patch.level=, CONSOLE_LOG_CHARSET=UTF-8, java.vm.info=mixed mode, java.vendor=Amazon.com Inc., java.vm.version=11.0.9+11-LTS, java.rmi.server.randomIDs=true, sun.io.unicode.encoding=UnicodeLittle, java.class.version=55.0}
***************System.getenv***************
System.getenv():----->{PROCESSOR_LEVEL=6, SESSIONNAME=Console, ALLUSERSPROFILE=C:\ProgramData, PROCESSOR_ARCHITECTURE=AMD64, CLASSPATH=.;D:\jdk\jdk11.0.9_11\lib;D:\jdk\jdk11.0.9_11\lib\tools.jar, WXDRIVE_START_ARGS=--wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcess, SystemRoot=C:\WINDOWS, NUMBER_OF_PROCESSORS=12}
System.getenv("env.key")=======>env_james

### 如何在 IntelliJ IDEA 中设置和使用 Program Arguments #### 配置 Run/Debug Configurations 在 IntelliJ IDEA 中,`Program arguments` 是用于向 Java 应用程序传递命令行参数的重要配置项。它允许开发者模拟通过命令行运行应用程序时传入的参数环境。以下是具体的操作步骤: 1. 打开 `Run/Debug Configurations` 对话框。可以通过菜单栏中的 **Run -> Edit Configurations...** 来访问此对话框[^1]。 2. 在弹出的窗口中,找到目标运行配置(如果尚未创建,则可以选择新建一个配置),并定位到 `Program arguments` 字段。 3. 将所需的命令行参数填写到该字段中。多个参数之间需要用空格分隔。例如: ```plaintext arg1 arg2 arg3=value ``` 4. 如果需要更复杂的参数结构(如微服务场景下的 Nacos 地址或命名空间),可以根据实际需求调整输入的内容[^4]。 #### 新版本 IDE 的特殊处理 需要注意的是,在某些新版本的 IntelliJ IDEA 中,默认情况下可能无法直接看到 `Program arguments` 选项。这是因为部分 UI 布局发生了变化,或者相关功能被隐藏。此时可以按照以下方法操作来解决问题: - 使用快捷键组合 Ctrl+Shift+A (Windows/Linux) 或 Command+Shift+A (Mac),搜索关键字 “Edit Configurations”,快速跳转至对应的界面[^3]。 - 若仍然未发现所需控件,请检查是否存在额外的折叠区域或其他高级设置开关,并尝试启用它们。 #### 参数分类说明 除了 `Program arguments` 外,还有其他几种常见的 JVM 启动参数类型值得区分理解: - **VM Options**: 主要用来指定虚拟机级别的选项,比如内存分配大小(-Xms,-Xmx),垃圾回收器的选择等[^5]; - **Environment Variables**: 设置进程级环境变量供应用读取; 这些都可以在同一处完成编辑,只需切换相应的标签页即可。 ```java public class Main { public static void main(String[] args){ System.out.println("Arguments received:"); for(int i=0;i<args.length;i++) { System.out.println((i+1)+": "+args[i]); } } } ``` 上述代码片段展示了如何接收来自外部定义好的 program argument 并打印出来验证其有效性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值