Java在可运行JAR文件中读取文本文件错误

Java在可运行JAR文件中读取文本文件错误,java,jar,executable-jar,Java,Jar,Executable Jar,我必须为学校做一个项目;这是一场游戏。我从文本文件加载地图。目前,我使用扫描仪进行扫描,但如果不将res文件放在JAR文件旁边,就无法在可运行的JAR文件中工作。我想把文本文件放在里面;它与BuffereImage一起工作,但文本文件不工作。我有以下代码: public String ReadTextFile(String path) throws IOException { String HoldsText= null; FileReader fr = new FileRea

我必须为学校做一个项目;这是一场游戏。我从文本文件加载地图。目前,我使用扫描仪进行扫描,但如果不将res文件放在JAR文件旁边,就无法在可运行的JAR文件中工作。我想把文本文件放在里面;它与BuffereImage一起工作,但文本文件不工作。我有以下代码:

public String ReadTextFile(String path) throws IOException {
    String HoldsText= null;

    FileReader fr = new FileReader(getClass().getResource(path).toString());
    BufferedReader br = new BufferedReader(fr);

    while((HoldsText = br.readLine())!= null){
        System.out.println(HoldsText);
    }

    return HoldsText;
}
path=“res/Maps/Map2.txt”

错误:

java.lang.NullPointerException
at aMAZEing.TextManager.ReadTextFile(TextManager.java:22)
at aMAZEing.Map.openFile(Map.java:89)
at aMAZEing.Map.<init>(Map.java:31)
at aMAZEing.Board.<init>(Board.java:50)
at aMAZEing.Maze.<init>(Maze.java:24)
at aMAZEing.Maze.main(Maze.java:15)
java.lang.NullPointerException
在aMAZEing.TextManager.ReadTextFile(TextManager.java:22)
在aMAZEing.Map.openFile(Map.java:89)
在aMAZEing.Map.(Map.java:31)
在aMAZEing.Board上。(Board.java:50)
Maze.(Maze.java:24)
main(Maze.java:15)
文件结构:

但这似乎不起作用。我做了很多研究,但没有找到任何适合我的。我只需要整个文本文件在一个字符串,其余的很容易与子字符串等

编辑!: 解决这个问题的方法是,我的路径中有res,因此它不起作用。我删除了res并获得了“/Maps/Map2.txt”作为路径,现在文件加载,我的地图再次显示

public static String ReadTextFile(String path) throws IOException{
    String HoldsText= null;

    InputStream is = getClass().getResourceAsStream(path);
    InputStreamReader fr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(fr);

    StringBuilder sb = new StringBuilder();
    while((HoldsText = br.readLine())!= null){
        sb.append(HoldsText)
        .append("\n");
    }

    return sb.toString();
}

如果出现错误,则需要追加行并使用
InputStreamReader
而不是
FileReader

粘贴堆栈跟踪。您将文件放在哪里?路径的值是多少。此外,关于星期一的部分也不是必需的。请尝试在路径的开头添加斜杠(/)
path=“/res/Maps/Map2.txt”
而不是
FileReader
使用
InputStreamReader
,并将从类加载器获得的
InputStream
传递给它。仍然不起作用,我尝试了“/”be4将res/Maps/Map2.txt和文件读取器替换为InputStreamReader和InputStreamReader,并且您的文件名是小写的
Map2.txt
,尽管这可能没有什么区别。您正在使用哪个操作系统?为了避免错误
无法对非静态方法getClass()进行静态引用
change
InputStream is=getClass().getResourceAsStream(路径)
by
InputStream=myClass.class.getResourceAsStream(路径)