金陵之風塵

          灰塵,也有生活;
          它們在風中飄著,在煙中戀愛,在暖氣上撫摸;
          它們在好幾個地方找我……
          posts - 5, comments - 13, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          使用ANT,無法訪問conf目錄下的文件

          Posted on 2008-08-04 02:52 風塵仆仆 閱讀(609) 評論(1)  編輯  收藏 所屬分類: Java

               在使用ANT的過程中遇到了問題,工程目錄下的conf目錄存放的是一些配置文件,在程序中需要讀取這此文件。
              使用IDE(如JCreator)編譯運行程序,在IDE環境中增加了classpath路徑“E:\MyProject\conf”后,在Main.java中調用
                ClassLoader.getSystemResource("default.properties");
              可以查找到default.properties文件并獲得其路徑E:\MyProject\conf\default.properties。
              但是在使用ANT編譯運行時,正確設置了<classpath>,可還是無法調用ClassLoader.getSystemResource查找到文件。

          工程的目錄如下:
          E:\MyProject
           |- build
           |  |- classes
           |  |  |- app
           |  |     |- Main.class
           |  |- test
           |  |  |- app
           |        |- MainTest.class
           |
           |- src
           |  |- app
           |     |- Main.java
           |
           |- test
           |  |- app
           |     |- Main.Test.java
           |
           |- lib
           |  |- commons-lang-2.4.jar
           |
           |- conf
           |  |- default.properties
           |
           |- build.xml

          build.xml部分內容如下:
          <?xml version="1.0"?>

          <project name="myproject" default="test" basedir=".">
            <property name="build.dir" value="build"/>
            <property name="src" value="src"/>
            <property name="test.src" value="test"/>
            <property name="lib.dir" value="lib"/>
            <property name="conf.dir" value="conf"/>

            <path id="lib.path">
              <fileset dir="${lib.dir}">
                <include name="**/*.jar"/>
              </fileset>
            </path>
           
            <path id="run.classpath">
              <pathelement location="${build.dir}/classes"/>
              <pathelement location="${conf.dir}"/> <!-- 已經添加了conf目錄 -->
              <path refid="lib.path"/>
            </path>
           
            <!-- 測試default.properties是否存在 -->
            <available property="have.conf" resource="default.properties">
              <classpath refid="run.classpath"/>
            </available>
           
            <!-- 運行ant echo時,返回have.conf: true,證明可以找到文件 -->
            <target name="echo">
              <echo message="have.conf: ${have.conf}"/>
            </target>
           
            <!-- 運行ant run時,ClassLoader.getSystemResource("default.properties")返回卻為null -->
            <target name="run" depends="compile">
              <java classname="app.Main">
                <classpath refid="run.classpath"/>
              </java>
            </target>
          </project>


          評論

          # re: 使用ANT,無法訪問conf目錄下的文件  回復  更多評論   

          2008-08-07 23:51 by 風塵仆仆
          搞定了,不應該使用表態的ClassLoader.getSystemResource("default.properties");

          應該:
          ClassLoader classloader = Thread.currentThread().getContextClassLoader();
          URL url = classloader.getResource("default.properties");

          參考Log4j源代碼Loader.java

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


          網站導航:
           
          主站蜘蛛池模板: 贺州市| 偏关县| 金华市| 松溪县| 漾濞| 苍山县| 新邵县| 石棉县| 仁寿县| 平昌县| 革吉县| 遵义县| 靖西县| 平江县| 长岭县| 高邑县| 乐昌市| 松滋市| 东港市| 中西区| 浦城县| 乐亭县| 淄博市| 南开区| 胶州市| 屯昌县| 永清县| 上犹县| 昭觉县| 景宁| 吉水县| 丘北县| 阿图什市| 肥西县| 封丘县| 神农架林区| 千阳县| 板桥市| 萨迦县| 郧西县| 福州市|