Java 从.jar读取文本文件

Java 从.jar读取文本文件,java,eclipse,file,jar,Java,Eclipse,File,Jar,我想在我的项目中添加一个文本文件,并在jar文件和eclipse中读取它。我这样做的代码如下: InputStream fx = this.getClass().getResourceAsStream("PlayerStats.txt"); Scanner scan = new Scanner(fx); 我已经在加载imageIcon时这样做了,它工作得很好,但当我运行它时,会出现以下错误: "Exception in thread "main" java.lang.NullP

我想在我的项目中添加一个文本文件,并在jar文件和eclipse中读取它。我这样做的代码如下:

    InputStream fx = this.getClass().getResourceAsStream("PlayerStats.txt");
    Scanner scan = new Scanner(fx);
我已经在加载imageIcon时这样做了,它工作得很好,但当我运行它时,会出现以下错误:

"Exception in thread "main" java.lang.NullPointerException 
    at java.io.Reader.<init>(Reader.java:61)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
    at java.util.Scanner.<init>(Scanner.java:590)
    at Player.<init>(Player.java:16)
    at Main.main(Main.java:6)"
唯一的区别是我在不同的类中使用这个方法,但是它们都在同一个源文件夹(“src”)中

我能做些什么来解决这个问题?

试着用这个

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(yourFileName).getFile());

如果不起作用,请将resources文件夹放在src文件夹中

您是否尝试过使用
this.getClass().getResourceAsStream(“/PlayerStats.txt”)
是的,我尝试过。结果是一样的。我仍然收到相同的错误。您是否解压缩了生成的Jar文件,以确保该文件存在于Jar文件中,并且存在于您期望的位置中?名称是否相同(必须完全匹配)是。该文件与其他资源文件和类一起退出。文件名匹配。现在在IDE中编译时它可以工作,但当我导出到.jar文件时,它不会读取该文件。可能是因为它在.jar中不是文件?我必须将资源转换为输入流吗?我将资源转换为输入流,现在可以工作了!在Eclipse和.jar中。谢谢
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(yourFileName).getFile());