我一直在努力解决这个问题,但这里有: 当我在Eclipse中使用getResourceAsStream运行我的java代码时,我有一个文本文件可以正常加载。
文本文件与使用它的类位于同一个包目录中。 但是,当我从命令行使用ant运行相同的代码时,getResourceAsStream将返回null。
我认为这是类路径相关但我似乎无法通过修改build.xml或目录结构来实现它
任何帮助表示感谢,谢谢,Jamesie
答案 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 文件中。