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 想飛的魚 閱讀(5878) 評論(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("")  回復  更多評論
            
          主站蜘蛛池模板: 建德市| 资兴市| 临高县| 平顶山市| 广宁县| 时尚| 保德县| 丰镇市| 五大连池市| 宜黄县| 新昌县| 岢岚县| 朔州市| 个旧市| 堆龙德庆县| 麻城市| 新建县| 阿拉善左旗| 安西县| 长汀县| 白朗县| 霍州市| 章丘市| 延川县| 阳高县| 沂水县| 东兰县| 元阳县| 五常市| 荔浦县| 凤庆县| 敦煌市| 峨边| 若羌县| 平罗县| 札达县| 绥阳县| 宁乡县| 磐石市| 雷波县| 克山县|