Java ant getResourceAsStream为null,但在Eclipse中正常
多年来,我一直在努力解决这个问题,但我想: 在Eclipse中使用getResourceAsStream运行java代码时,我有一个文本文件可以很好地加载 文本文件与使用它的类位于同一个包目录中。 但是,当我使用ant从命令行运行相同的代码时,getResourceAsStream返回null 我认为它与类路径相关,但我似乎无法通过修改build.xml或目录结构来实现它Java ant getResourceAsStream为null,但在Eclipse中正常,java,ant,Java,Ant,多年来,我一直在努力解决这个问题,但我想: 在Eclipse中使用getResourceAsStream运行java代码时,我有一个文本文件可以很好地加载 文本文件与使用它的类位于同一个包目录中。 但是,当我使用ant从命令行运行相同的代码时,getResourceAsStream返回null 我认为它与类路径相关,但我似乎无法通过修改build.xml或目录结构来实现它 感谢您的帮助,Jamesie我也有同样的问题,我花了一段时间才解决。 我还认为问题来自getResourceAsStream
感谢您的帮助,Jamesie我也有同样的问题,我花了一段时间才解决。 我还认为问题来自
getResourceAsStream()
,或者来自参数中的相对路径,但是否
比这简单得多:文件不存在
您可以检查是否需要:转到您用ant生成的.jar文件,并将其解压缩(使用7zip、WinRAR或其他..)。您将看到config.properties文件不在那里
实际上,如果只在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文件中。请显示您的Ant任务,在编译类时,希望不要将该txt文件移动到compiled classes文件夹ex:
bin\com\xxx\urtext.txt
。这是我的ant目标:这是我的代码(对于testNG数据提供程序):InputStream resourceStream=DataProviderStuff.class.getResourceAsStream(文件名)