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