Posted on 2008-08-04 02:52
风尘仆仆 阅读(593)
评论(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>