多年来我一直在努力解决这个问题,但这里有: 当我在 Eclipse 中使用 getResourceAsStream 运行我的 java 代码时,我有一个文本文件可以正常加载。
文本文件与使用它的类位于同一包目录中。 然而,当我使用 ant 从命令行运行相同的代码时,getResourceAsStream 返回 null。
我认为它与类路径相关,但我似乎无法通过修改我的 build.xml 或目录结构来解决它
感谢任何帮助,谢谢,Jamesie
最佳答案
我遇到了同样的问题,我花了一段时间才解决。
我还认为问题出在 getResourceAsStream()
, 或者来自参数中的相对路径,但是 NO !
比那简单得多:文件不存在。
您可以检查是否需要:转到您用 ant 生成的 .jar 文件,然后解压缩它(使用 7zip、WinRAR 或其他工具..)。您会看到您的 config.properties 文件不存在。
的确,如果刚刚使用<jar />
在您的 build.xml 文件(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 文件中。
关于java - ant getResourceAsStream null 但在 Eclipse 中正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13269908/