隨筆 - 42  文章 - 71  trackbacks - 0
          <2008年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Technorati 標簽: ,,

          自從有了Ant,好像就不用再自己寫很長很長的CLASSPATH了,尤其是有時候手動編寫這個變量還可能誤寫,導致出現了ClassNotFound錯誤時查了很久都不知道是怎么回事。

          對于比較大的項目,搞一個Ant是很不錯的事情,但是有時候就是做一些簡單的測試,我就不再費力氣寫Ant了,直接在命令行輸入命令。但是設置CLASSPATH在這個時候就比較頭疼了,尤其是現在的Java應用,隨便寫個簡單的東西可能就需要一堆的框架,就會有一堆的jar文件要加入到CLASSPATH里面了。想起來Windows的批處理有For命令,就拿來研究一下:

          在命令行窗口:

          set cp=

          for %f in (*.jar) do set cp=%cp%;%f

          echo %cp%

          輸出結果是:

          %cp%;servlet-api.jar

          這個明顯是不對的啊,于是查看Windows的Set命令的幫助,發現也存在類似在編程中變量生命周期的問題,需要打開V模式才能夠延展變量生命周期。默認情況下,V模式是關閉的。

          于是,在命令行窗口進行如下命令:

          cmd /V:ON (這一句是打開cmd的V模式)

          set cp=

          for %f in (*.jar) do set cp=!cp!;%f

          echo %cp%

          輸出結果是:

          ;commons-el.jar;jasper-compiler-jdt.jar;jasper-compiler.jar;jasper-runtime.jar;jsp-api.jar;naming-factory-dbcp.jar;naming-factory.jar;naming-resources.jar;servlet-api.jar

           

          正是我們需要的。當然了,還要加上全路徑的。還有要注意的就似乎在for循環中,變量cp的引用不再是%%了,而是!!了,真是搞不懂MS怎么會這么奇怪。相比而言Unix/Linux的Shell就好很多了。

           

          注意,如果是在.bat文件中運行,好像不能直接使用cmd /V:ON命令,需要手動先打開;另外,在批處理文件中的for循環的變量是要兩個%來表達的,如果在批處理文件中,就得這么寫:

          for %%f in (*.jar) do set cp=!cp!;%%f

           

          Windows的批處理文件還是很有意思的,抽空得整理的好的教程了,呵呵。

          posted on 2008-05-29 00:12 YODA 閱讀(3369) 評論(4)  編輯  收藏

          FeedBack:
          # re: 利用Windows 批處理文件自動生成CLASSPATH 2008-05-29 09:59 lingos
          這個比較簡單,如果*.jar是在子文件夾下呢?  回復  更多評論
            
          # re: 利用Windows 批處理文件自動生成CLASSPATH 2008-05-29 10:00 YODA
          for /R %f in (*.jar) do xxxxx
          for命令加上/R參數就可以遞歸子文件夾  回復  更多評論
            
          # re: 利用Windows 批處理文件自動生成CLASSPATH 2008-05-29 12:36 BeanSoft
          非常有用!
          @echo off
          set cp=
          for %%i in (".\lib\*.jar") do call setenv.bat %%i
          java -cp %cp% MyApp

          setenv.bat
          set cp=%cp%;%1  回復  更多評論
            
          # re: 利用Windows 批處理文件自動生成CLASSPATH 2008-05-29 13:46 YODA
          嗯,BeanSoft寫的也是一個很好的辦法  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 珲春市| 镇平县| 宁化县| 万全县| 上犹县| 凤阳县| 中卫市| 象州县| 孙吴县| 商丘市| 布拖县| 莱州市| 株洲县| 泸水县| 梁平县| 白银市| 通州市| 三门县| 阜宁县| 肇源县| 大同县| 林口县| 吴忠市| 凤冈县| 怀宁县| 那曲县| 方城县| 鹿泉市| 渝中区| 三明市| 永宁县| 仪陇县| 阿勒泰市| 绥江县| 舟山市| 富民县| 女性| 淮阳县| 若尔盖县| 东宁县| 安泽县|