wiflish
          Loving Life! Loving Coding!
          posts - 98,comments - 98,trackbacks - 0
          代碼如下:
          ?1?????public?static?Map?getEnv()?{
          ?2?????????Map?map?=?new?HashMap();
          ?3?????????String?OS?=?System.getProperty("os.name").toLowerCase();
          ?4?????????
          ?5?????????Process?p?=?null;
          ?6?????????
          ?7 ?? ?? ? /**
          ?8? ??? ??? *?以windows為例.
          ?9? ??? ??? */
          10?????????if(OS.indexOf("windows")?>?-1)?{
          11?????????????try?{
          12?????????????????p?=?Runtime.getRuntime().exec("cmd?/c?set");
          13?????????????????BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(p.getInputStream()));
          14?????????????????
          15?????????????????String?line;
          16?????????????????
          17?????????????????while((line?=?br.readLine())?!=?null)?{
          18?????????????????????String[]?str?=?line.split("=");
          19?????????????????????map.put(str[0],?str[1]);
          20?????????????????}
          21?????????????}?catch(IOException?ioe)?{
          22?????????????????ioe.printStackTrace();
          23?????????????}
          24?????????}
          25?????????return?map;
          26?????}

          上述代碼將windows系統(tǒng)中的環(huán)境變量轉換為java的Map,只要通過map.get(key)就能得到環(huán)境變量值,比如map.get("JAVA_HOME"),得到JAVA_HOME的值,即JAVA_HOME的系統(tǒng)路徑。

          值得注意的是在java中使用windows操作系統(tǒng)命令時要在命令前加 cmd /c,否則java會報錯(),錯誤列表如下:
          ?1?java.io.IOException:?CreateProcess: ${執(zhí)行的操作命令表達式或者.bat文件} error=2
          ?2?at?java.lang.Win32Process.create(Native?Method)
          ?3?at?java.lang.Win32Process.<init>(Win32Process.java:63)
          ?4?at?java.lang.Runtime.execInternal(Native?Method)
          ?5?at?java.lang.Runtime.exec(Runtime.java:566)
          ?6?at?java.lang.Runtime.exec(Runtime.java:428)
          ?7?at?java.lang.Runtime.exec(Runtime.java:364)
          ?8?at?java.lang.Runtime.exec(Runtime.java:326)
          ?9?at?org.apache.jsp.ChangeDirBajaRCXX_jsp._jspService(ChangeDirBaja
          10?p.java:185)

          該錯誤的解釋:
          The?error?2?comes?from?the?CreateProcess()?call,?from?MSDN?(GetLastError():

          2?-?The?system?cannot?find?the?file?specified.?-?ERROR_FILE_NOT_FOUND

          So,?it?means?the?path?you?passed?cannot?be?found.?Maybe?you?did?not?configure?your?Runtime?
          class?correctly.
          put?the?batch?file?in?the?same?directory?as?the?
          class?file?and?use?(for?a?test):

          posted on 2006-07-03 17:11 想飛的魚 閱讀(5889) 評論(2)  編輯  收藏 所屬分類: java

          FeedBack:
          # re: 通過java獲取系統(tǒng)環(huán)境變量
          2010-03-02 16:45 | mm
          但是,在java中調用 cmd /c set 命令和在命令提示符中的輸出不一樣啊,java調用時出現(xiàn)的少,新添加的自定義環(huán)境變量還是沒有啊  回復  更多評論
            
          # re: 通過java獲取系統(tǒng)環(huán)境變量[未登錄]
          2010-08-20 17:22 | hello
          System.getenv("")  回復  更多評論
            
          主站蜘蛛池模板: 武平县| 班戈县| 潢川县| 和硕县| 镇巴县| 武陟县| 岑巩县| 海淀区| 大悟县| 甘谷县| 利辛县| 石首市| 龙岩市| 栖霞市| 仙游县| 潜江市| 盐津县| 石首市| 开封县| 兰溪市| 巴林右旗| 义马市| 鄂尔多斯市| 惠东县| 弋阳县| 扶余县| 泸西县| 江西省| 石泉县| 郎溪县| 固原市| 惠安县| 织金县| 女性| 寻乌县| 普兰县| 格尔木市| 义乌市| 六安市| 祁东县| 岳阳市|