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系統中的環境變量轉換為java的Map,只要通過map.get(key)就能得到環境變量值,比如map.get("JAVA_HOME"),得到JAVA_HOME的值,即JAVA_HOME的系統路徑。

          值得注意的是在java中使用windows操作系統命令時要在命令前加 cmd /c,否則java會報錯(),錯誤列表如下:
          ?1?java.io.IOException:?CreateProcess: ${執行的操作命令表達式或者.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獲取系統環境變量
          2010-03-02 16:45 | mm
          但是,在java中調用 cmd /c set 命令和在命令提示符中的輸出不一樣啊,java調用時出現的少,新添加的自定義環境變量還是沒有啊  回復  更多評論
            
          # re: 通過java獲取系統環境變量[未登錄]
          2010-08-20 17:22 | hello
          System.getenv("")  回復  更多評論
            
          主站蜘蛛池模板: 睢宁县| 利辛县| 永州市| 鹿泉市| 合水县| 宕昌县| 濮阳县| 沾化县| 绥德县| 宁夏| 雅安市| 云林县| 延吉市| 广水市| 大理市| 新源县| 固安县| 普陀区| 凌海市| 连南| 汉中市| 三门峡市| 黑河市| 静宁县| 广丰县| 枞阳县| 浮山县| 色达县| 淮北市| 潼南县| 太保市| 夏津县| 彰化市| 崇义县| 湄潭县| 伊宁县| 石楼县| 大洼县| 文成县| 塔城市| 盐池县|