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"));
獲取到瞭之前配置的環境變量,問題解決。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java獲取環境變量(System.getenv)的方法
- java獲取和設置系統變量問題(環境變量)
- IDEA神器一鍵查看Java字節碼及其他類信息插件
- 詳解Java集合類之Map篇
- Intellij IDEA 的maven項目通過Java代碼實現Jetty的Http服務器(推薦)