ant getResourceAsStream null但在Eclipse中没问题

时间:2012-11-07 12:34:33

标签: java ant

我一直在努力解决这个问题,但这里有: 当我在Eclipse中使用getResourceAsStream运行我的java代码时,我有一个文本文件可以正常加载。

文本文件与使用它的类位于同一个包目录中。 但是,当我从命令行使用ant运行相同的代码时,getResourceAsStream将返回null。

我认为这是类路径相关但我似乎无法通过修改build.xml或目录结构来实现它

任何帮助表示感谢,谢谢,Jamesie

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我花了一段时间来解决它。 我还认为问题来自getResourceAsStream(),或来自参数中的相对路径,但

比这简单得多:文件不存在。

您可以检查是否需要:转到使用ant生成的 .jar文件,然后解压缩(使用7zip,WinRAR或其他..)。你会看到你的config.properties文件不存在。

的确,如果只在你的 build.xml 文件中使用<jar />(ant的输入),它只会压缩 .java 文件! 您还需要使用副本:

<target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath"/>
        <copy todir="${classes.dir}">
            <fileset dir="${res.dir}"
                     includes="**/*.properties,**/*.xml,**/*.png,**/*.jpg" />
            <!-- I advise you to also include .xml .jpg, ... or any file you need that doesn't end with .java--> 
        </copy>
</target>

就是这样,您现在可以通过再次解压缩来检查config.properties是否包含在最终的 .jar 文件中。