java代码片段,用于在打包到jar之前和之后读取文件

时间:2010-11-25 11:31:19

标签: java file jar

我知道这肯定已经回答了一百万次,但我似乎无法在任何地方找到它。所以这里是:在我的junit测试中,我有这个来访问文件foo.txt

this.getClass().getResourceAsStream("/foo.txt")

这个工作正常,直到我把它打包到一个jar文件中。我应该如何编辑我的代码以便它在两种情况下都有效?

非常感谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

确保文本文件打包在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中的Class-Path条目指向src:

Class-Path: src/