在打包到jar之前和之后读取文件的java代码段

在打包到jar之前和之后读取文件的java代码段,java,file,jar,Java,File,Jar,我知道这个问题已经被回答了一百万次,但我似乎在任何地方都找不到。下面是:在我的junit测试中,我可以访问文件foo.txt: this.getClass().getResourceAsStream("/foo.txt") 在我将其打包成jar文件之前,这一切都很正常。我应该如何编辑代码,使其在两种情况下都能工作 非常感谢检查foo.txt是否打包在jar文件的根目录中。我认为这个文件可能存在于文件系统中,所以当您从IDE运行代码时,它可以工作,但由于某些原因,它不在jar中 可能的原因是,如

我知道这个问题已经被回答了一百万次,但我似乎在任何地方都找不到。下面是:在我的junit测试中,我可以访问文件
foo.txt

this.getClass().getResourceAsStream("/foo.txt")
在我将其打包成jar文件之前,这一切都很正常。我应该如何编辑代码,使其在两种情况下都能工作


非常感谢

检查foo.txt是否打包在jar文件的根目录中。我认为这个文件可能存在于文件系统中,所以当您从IDE运行代码时,它可以工作,但由于某些原因,它不在jar中


可能的原因是,如果您使用ant脚本创建jar,并将包含模式配置为*.class。

确保文本文件打包在jar中:

test.jar =>
    -> META-INF/MANIFEST.MF
    -> com/somepackage/ClassThatLoadsFooTxt.class
    -> foo.txt
如果类文件和
foo.txt
包含在src文件夹中,如下所示:

   -> src/com/somepackage/ClassThatLoadsFooTxt.class
   -> src/foo.txt
确保MANIFEST.MF中的
类路径
项指向src:

Class-Path: src/

当您将代码打包到jar中时,foo.txt在哪里?@seminolas再次将其放在jar的根目录下,它在jar的根目录下,然后还有其他错误,这就是我在Java WebStart应用程序中从jar获取文件的方式。。。唯一的区别是我使用ClassMinName.class.getResourceAsStream()而不是这个.getClass().getResourceAsStream()。类路径条目不相关(并且不正确-JAR文件中没有“src”目录)