我知道这肯定已经回答了一百万次,但我似乎无法在任何地方找到它。所以这里是:在我的junit测试中,我有这个来访问文件foo.txt
:
this.getClass().getResourceAsStream("/foo.txt")
这个工作正常,直到我把它打包到一个jar文件中。我应该如何编辑我的代码以便它在两种情况下都有效?
非常感谢
答案 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/