rmn190
rmn190

Reputation: 611

Properties files not found running java through Ant

the structure of the example project is:

.
|-- ./build
|   `-- ./build/TestAntLoadFile.class
|-- ./build.xml
|-- ./dist
|   |-- ./dist/icpFinder.jar
|   `-- ./dist/icp-finder.properties
|-- ./icp-finder_bak.properties
`-- ./src
    `-- ./src/TestAntLoadFile.java

and the code getting the properties file is:

 public class TestAntLoadFile {
    private static final String CUSTOMER_CONFIG_FILE_NAME 
          = "icp-finder.properties";

    public static void main(String[] args) {
        InputStream custumerConfigIn = TestAntLoadFile.class.
                getClassLoader().getResourceAsStream(CUSTOMER_CONFIG_FILE_NAME);

        System.out.println("custumerConfigIn: " + custumerConfigIn);
    }

 }

and build.xml core contend is :

    <path id="run.classpath">
    <fileset dir = "${dist.dir}" >
        <include name="**/*.jar"/>
        <include name="**/*.properties"/>
        <include name="./icp-finder.properties"/>
    </fileset>
</path>

<target name="run" depends="jar">
    <java fork="true" classname="TestAntLoadFile">
        <classpath>
            <path refid="run.classpath"/>
        </classpath>

    </java>     
</target>

the project run well in eclipse, Has anybody got any suggestions?

Upvotes: 2

Views: 3166

Answers (1)

martin clayton
martin clayton

Reputation: 78105

Rather than including the properties file itself in the classpath, you need to include the directory it resides in, something like this for example:

<path id="run.classpath">
    <fileset dir="${dist.dir}" >
        <include name="**/*.jar"/>
    </fileset>
    <dirset dir="${dist.dir}" />
    <pathelement path="${dist.dir}" />
</path>

Upvotes: 2

Related Questions