idea向System.getenv()添加系统环境变量的操作

idea如何设置系统环境变量

背景

最近在接入阿里云的短信服务,在使用阿里云短信服务的SDK过程中想看看SDK中HttpUtil 中

public static String debugHttpRequest(HttpRequest request) {
        if (isHttpDebug) {
            StringBuilder debugString = new StringBuilder();

            String sysUrl = request.getSysUrl();
            URL url = null;
            try {
                url = new URL(sysUrl);
                debugString.append("> " + request.getSysMethod() + " " + url.getProtocol().toUpperCase() + "/1.1\n> ");
                debugString.append("Host : " + url.getHost() + "\n> ");
            } catch (MalformedURLException e) {
                debugString.append("> " + request.getSysMethod() + " " + sysUrl + "\n> ");
                debugString.append("Host : " + sysUrl + "\n> ");
            }
            Map<String, String> requestHeaders = request.getSysHeaders();
            for (Entry<String, String> entry : requestHeaders.entrySet()) {
                debugString.append(entry.getKey() + " : " + entry.getValue() + "\n> ");
            }
            debugString.append("Request URL : " + sysUrl + "\n> ");
            if (isHttpContentDebug) {
                try {
                    debugString.append("\n" + request.getHttpContentString());
                } catch (ClientException e) {
                    debugString.append("\n" + "Can not parse response due to unsupported encoding : " + request
                            .getSysEncoding());
                }
            }
            log.info("\n" + debugString);
            return debugString.toString();
        } else {
            return null;
        }
    }

上述方法的debug信息,但是由于isHttpDebug是在静态代码块中通过读取系统环境变量判断的

static {
        Boolean flag = "sdk".equalsIgnoreCase(System.getenv("DEBUG"));
        isHttpDebug = flag;
        isHttpContentDebug = flag;
    }

所以来想办法如何设置这个DEBUG参数

读取系统环境变量

for (String s : System.getenv().keySet()) {
    System.out.println(s+":"+System.getenv(s));
}

设置系统环境变量

至此,通过idea设置程序运行系统环境变量就完成了。可以通过System.getenv()来查看设置的系统环境变量。

mac上ide中无法获取环境变量的问题

工作环境:mac

IDE:eclipse or IntelliJ IDEA

工作中需要用环境变量来设置参数,然后在程序启动时发现之前在.bash_profile中配置的环境变量都读不到,命令行echo一下是生效的。

后来定位到原因是idea启动没有获取到环境变量。。我之前的启动方式是直接双击图标。

之后关闭ide,通过bash命令 open /Applications/xxx.app启动ide。

System.out.println(System.getenv("LOCAL_PROXY"));

获取到了之前配置的环境变量,问题解决。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java System类用法实战案例

    本文实例讲述了Java System类用法.分享给大家供大家参考,具体如下: 一 使用System类访问系统属性 1 代码 import java.util.Map; public class SystemClassDemo { public static void main(String[] args) { Map<String, String> env = System.getenv(); // 获得系统的环境变量 for (String name : env.keySet()) { Sy

  • System 类 和 Runtime 类的常用用法介绍

    System类的常用用法1,主要获取系统的环境变量信息 复制代码 代码如下: public static void sysProp()throws Exception{  Map<String,String> env = System.getenv();  //获取系统的所有环境变量  for(String name : env.keySet()){   System.out.println(name + " : " +env.get(name));  }  //获取系统的

  • 详解Java获取环境变量及系统属性的方法

    环境变量这个概念不陌生, 就是操作系统的环境变量. 系统变量就是java本身维护的变量. 通过 System.getProperty 的方式获取. 对于不同的操作系统来说, 环境变量的处理可能会有一些不统一的地方, 比如说: 不区分大小写 等等. Java 获取环境变量 Java 获取环境变量的方式很简单: System.getEnv()  得到所有的环境变量 System.getEnv(key) 得到某个环境变量的值 Map map = System.getenv(); Iterator it

  • idea向System.getenv()添加系统环境变量的操作

    idea如何设置系统环境变量 背景 最近在接入阿里云的短信服务,在使用阿里云短信服务的SDK过程中想看看SDK中HttpUtil 中 public static String debugHttpRequest(HttpRequest request) { if (isHttpDebug) { StringBuilder debugString = new StringBuilder(); String sysUrl = request.getSysUrl(); URL url = null; t

  • Java获取环境变量(System.getenv)的方法

    目录 简介 常用方法 获得自定义的环境变量 打印所有的环境变量 默认环境变量及其含义 简介 说明 本文用示例介绍Java获得环境变量的方法:System.getenv. System.getenv与System.getProperty的区别 项 属性(System.getProperty) 环境变量(System.getenv) 运行时是否可修改 可以 不可以 有效范围 仅在java平台中有效 系统里所有程序都有效 创建的时机 打包应用时属性必须存在 可以在任何时候创建环境变量 相关网址 Sys

  • Android获取与设置系统环境变量的方法指南

    前言   在Android源码的分析过程中经常会看到System.getenv("xxx")和getenv("xxx")以及Os.getenv("xxx")获取Android系统的环境变量值,本篇的重点不是分析代码的调用逻辑,而是讲解怎么在Android开发源码环境下增加和在Android终端环境下增加/查看系统环境变量.废话不多说开干! 一. Android源码环境下增加环境变量   有过Linxu开发相关经验的童靴们应该都知道,对于添加环境变

  • Perl操作系统环境变量的脚本代码

    如何用Perl脚本操作系统环境变量呢? 想必很多朋友马上就会想到Perl中提供的$ENV这个特殊的哈希变量,对,在$ENV中完全可以获取到一些系统变量.怎么获取呢?比如想要知道Path这个系统环境变量的内容,我们可以通过$ENV{'Path'} 来获取.如果想设置Path这个环境变量呢,哈,使用$ENV{'Path'}='C:\Windows\System32'来设置.想获取所有的环境变量列表也很简单,哈希遍历不就可以了~ 其实,本文中真正想问的是,你在通过上述方法设置了一个环境变量后,右击"我

  • 通过批处理bat设置系统环境变量的实现代码

    在软件运行过程中,可能需要配置计算机的环境变量,在这里分为两种情况: 一:增加或修改环境变量只在当前软件环境中使用 如我们设置Java的环境变量: set CLASSPATH=%CLASSPATH%;C:\LS\JAVA.JAR 保持原有的不变  自己加上要加的jar包,用分号隔开,当然你也可以写到前面,如:set CLASSPATH=D:/My_Path;%CLASSPATH% set JAVA_HOME=  这里的路径自己写吧 不过这样写只对你打开的这个dos窗口有效,也就是你只有在这个窗口

  • 浅谈System.getenv()和System.getProperty()的区别

    最近遇到一个需求,服务器实例需要获取当前的环境变量.经过查资料,发现环境变量可以在两个地方设置. 一.在系统层面设置环境变量 在系统层面设置环境变量,之前我们应该都操作过,以windows系统为例 System.getenv()可以获取的在这里设置的变量. 二.在java虚拟机层面设置环境变量 个人理解,System.getProperty()可以获取在JVM 层面的变量,有些变量在JVM启动后,就内置了,如: 参数值 参数含义 java.version Java 运行时环境版本 java.ve

  • Linux service无法使用系统环境变量的问题及解决

    目录 Linux service无法使用系统环境变量 详细描述 问题探索 解决办法 service文件中环境变量文件的使用 测试准备 测试流程 总结 Linux service无法使用系统环境变量 详细描述 之前在做一个mysql多实例安装时,安装成功,linux也能成功启动:但是将support-files/mysqld_multi.server移动到/etc/init.d/目录下并设置开机启动(chkconfig xxx on)失败: 问题探索 发现了问题,开始解决,发现service xx

  • GO语言获取系统环境变量的方法

    本文实例讲述了GO语言获取系统环境变量的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (  "fmt"  "os"  //我们要用到os包中的env ) func main() {  //os.Getenv检索环境变量并返回值,如果变量是不存在的,这将是空的.  HOME:= os.Getenv("HOME")  fmt.Println(HOME)  fmt.Printf(os.Ge

  • Springboot yml如何获取系统环境变量的值

    目录 yml获取系统环境变量的值 用法很简单 读取环境变量和配置信息的方法 核心的配置文件读取方式 yml的配置文件 yml获取系统环境变量的值 注意,这里说的是获取系统环境变量的值,譬如Windows里配置的JAVA_HOME之类的,可以直接在Springboot的配置文件中获取. 我们经常使用一些docker管理平台,如DaoCloud.rancher之类的,里面都可以配置环境变量,目的当然也就是供程序获取.使用环境变量的话,可以避免在application.yml里直接明文编写数据库密码.

  • SpringBoot配置文件中系统环境变量存在特殊字符的处理方式

    目录 配置文件中系统环境变量存在特殊字符的处理 例如 yml配置文件的处理特殊字符 解决办法 配置文件中系统环境变量存在特殊字符的处理 SpringBoot的配置文件中使用系统环境变量作为外部配置的时候,如果出现特殊字符,比如Mysql密码等,只需要在系统环境变量中添加反斜杠(\)即可,不需要例会env/echo命令打印的环境变量, 例如 spring: cloud: service-registry: auto-registration: enabled: false jpa: open-in

随机推荐