金陵之風(fēng)塵

          灰塵,也有生活;
          它們?cè)陲L(fēng)中飄著,在煙中戀愛(ài),在暖氣上撫摸;
          它們?cè)诤脦讉€(gè)地方找我……
          posts - 5, comments - 13, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

               在使用ANT的過(guò)程中遇到了問(wèn)題,工程目錄下的conf目錄存放的是一些配置文件,在程序中需要讀取這此文件。
              使用IDE(如JCreator)編譯運(yùn)行程序,在IDE環(huán)境中增加了classpath路徑“E:\MyProject\conf”后,在Main.java中調(diào)用
                ClassLoader.getSystemResource("default.properties");
              可以查找到default.properties文件并獲得其路徑E:\MyProject\conf\default.properties。
              但是在使用ANT編譯運(yùn)行時(shí),正確設(shè)置了<classpath>,可還是無(wú)法調(diào)用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部分內(nèi)容如下:
          <?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}"/> <!-- 已經(jīng)添加了conf目錄 -->
              <path refid="lib.path"/>
            </path>
           
            <!-- 測(cè)試default.properties是否存在 -->
            <available property="have.conf" resource="default.properties">
              <classpath refid="run.classpath"/>
            </available>
           
            <!-- 運(yùn)行ant echo時(shí),返回have.conf: true,證明可以找到文件 -->
            <target name="echo">
              <echo message="have.conf: ${have.conf}"/>
            </target>
           
            <!-- 運(yùn)行ant run時(shí),ClassLoader.getSystemResource("default.properties")返回卻為null -->
            <target name="run" depends="compile">
              <java classname="app.Main">
                <classpath refid="run.classpath"/>
              </java>
            </target>
          </project>


          評(píng)論

          # re: 使用ANT,無(wú)法訪問(wèn)conf目錄下的文件  回復(fù)  更多評(píng)論   

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

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

          參考Log4j源代碼Loader.java

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 吉安市| 大同县| 土默特右旗| 大石桥市| 南川市| 泰顺县| 西吉县| 徐闻县| 龙里县| 水富县| 治多县| 葵青区| 武清区| 平陆县| 涿鹿县| 赞皇县| 喀什市| 南华县| 绥宁县| 长兴县| 新源县| 巫溪县| 黑山县| 城固县| 应城市| 哈巴河县| 安岳县| 侯马市| 恩施市| 娱乐| 井冈山市| 伊通| 巴彦县| 石台县| 万宁市| 南江县| 上思县| 祁阳县| 梁平县| 大足县| 天峨县|